Better the destructuring of nested array binding pattern

This commit is contained in:
Sheetal Nandi 2015-12-04 13:41:10 -08:00
parent 7945de4cd3
commit de7626356c
3 changed files with 46 additions and 34 deletions

View File

@ -1986,8 +1986,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
return result;
}
function createElementAccessExpression(expression: Expression, argumentExpression: Expression): ElementAccessExpression {
const result = <ElementAccessExpression>createSourceMappedSynthesizedNode(SyntaxKind.ElementAccessExpression, argumentExpression);
function createElementAccessExpression(expression: Expression, argumentExpression: Expression, sourceMapNode?: Node): ElementAccessExpression {
const result = <ElementAccessExpression>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));

View File

@ -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"}
{"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"}

View File

@ -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 >