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 >