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 >