From c3c9e513a816305829051e5f6573b9372ac8f767 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 30 Oct 2015 15:24:34 -0700 Subject: [PATCH 1/6] Added failing test. --- .../conformance/es6/for-ofStatements/for-of58.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/cases/conformance/es6/for-ofStatements/for-of58.ts diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of58.ts b/tests/cases/conformance/es6/for-ofStatements/for-of58.ts new file mode 100644 index 00000000000..9f646e2c851 --- /dev/null +++ b/tests/cases/conformance/es6/for-ofStatements/for-of58.ts @@ -0,0 +1,12 @@ +//@target: ES5 + +var array = [1,2,3]; +var sum = 0; + +for (let num of array) { + if (sum === 0) { + array = [4,5,6] + } + + sum += num; +} \ No newline at end of file From f36b6ab8f94ce66499cb63185da44ca660c0d4e1 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 30 Oct 2015 15:30:59 -0700 Subject: [PATCH 2/6] Accepted baselines. --- tests/baselines/reference/for-of58.js | 23 ++++++++++++++ tests/baselines/reference/for-of58.symbols | 23 ++++++++++++++ tests/baselines/reference/for-of58.types | 36 ++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 tests/baselines/reference/for-of58.js create mode 100644 tests/baselines/reference/for-of58.symbols create mode 100644 tests/baselines/reference/for-of58.types diff --git a/tests/baselines/reference/for-of58.js b/tests/baselines/reference/for-of58.js new file mode 100644 index 00000000000..196d2d4a15d --- /dev/null +++ b/tests/baselines/reference/for-of58.js @@ -0,0 +1,23 @@ +//// [for-of58.ts] + +var array = [1,2,3]; +var sum = 0; + +for (let num of array) { + if (sum === 0) { + array = [4,5,6] + } + + sum += num; +} + +//// [for-of58.js] +var array = [1, 2, 3]; +var sum = 0; +for (var _i = 0; _i < array.length; _i++) { + var num = array[_i]; + if (sum === 0) { + array = [4, 5, 6]; + } + sum += num; +} diff --git a/tests/baselines/reference/for-of58.symbols b/tests/baselines/reference/for-of58.symbols new file mode 100644 index 00000000000..cb7fa87e22d --- /dev/null +++ b/tests/baselines/reference/for-of58.symbols @@ -0,0 +1,23 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of58.ts === + +var array = [1,2,3]; +>array : Symbol(array, Decl(for-of58.ts, 1, 3)) + +var sum = 0; +>sum : Symbol(sum, Decl(for-of58.ts, 2, 3)) + +for (let num of array) { +>num : Symbol(num, Decl(for-of58.ts, 4, 8)) +>array : Symbol(array, Decl(for-of58.ts, 1, 3)) + + if (sum === 0) { +>sum : Symbol(sum, Decl(for-of58.ts, 2, 3)) + + array = [4,5,6] +>array : Symbol(array, Decl(for-of58.ts, 1, 3)) + } + + sum += num; +>sum : Symbol(sum, Decl(for-of58.ts, 2, 3)) +>num : Symbol(num, Decl(for-of58.ts, 4, 8)) +} diff --git a/tests/baselines/reference/for-of58.types b/tests/baselines/reference/for-of58.types new file mode 100644 index 00000000000..b82fdfd8483 --- /dev/null +++ b/tests/baselines/reference/for-of58.types @@ -0,0 +1,36 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of58.ts === + +var array = [1,2,3]; +>array : number[] +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number + +var sum = 0; +>sum : number +>0 : number + +for (let num of array) { +>num : number +>array : number[] + + if (sum === 0) { +>sum === 0 : boolean +>sum : number +>0 : number + + array = [4,5,6] +>array = [4,5,6] : number[] +>array : number[] +>[4,5,6] : number[] +>4 : number +>5 : number +>6 : number + } + + sum += num; +>sum += num : number +>sum : number +>num : number +} From 90bac23be41c6ebae3e51d01e9a4a49e756d5b36 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 30 Oct 2015 15:59:16 -0700 Subject: [PATCH 3/6] Always generate an identifier in a for-of loop. --- src/compiler/emitter.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index b2fa553a737..c3933451a7a 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3614,10 +3614,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // // for (let v of arr) { } // - // we don't want to emit a temporary variable for the RHS, just use it directly. - let rhsIsIdentifier = node.expression.kind === SyntaxKind.Identifier; + // we can't reuse 'arr' because it might be modified within the body of the loop. let counter = createTempVariable(TempFlags._i); - let rhsReference = rhsIsIdentifier ? node.expression : createTempVariable(TempFlags.Auto); + let rhsReference = createSynthesizedNode(SyntaxKind.Identifier) as Identifier; + rhsReference.text = node.expression.kind === SyntaxKind.Identifier ? + makeUniqueName((node.expression).text) : + makeTempVariableName(TempFlags.Auto); // This is the let keyword for the counter and rhsReference. The let keyword for // the LHS will be emitted inside the body. @@ -3629,15 +3631,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(" = 0"); emitEnd(node.expression); - if (!rhsIsIdentifier) { - // , _a = expr - write(", "); - emitStart(node.expression); - emitNodeWithoutSourceMap(rhsReference); - write(" = "); - emitNodeWithoutSourceMap(node.expression); - emitEnd(node.expression); - } + // , _a = expr + write(", "); + emitStart(node.expression); + emitNodeWithoutSourceMap(rhsReference); + write(" = "); + emitNodeWithoutSourceMap(node.expression); + emitEnd(node.expression); write("; "); From 6a277d981adee1b7a68b1faba5defc04da31163f Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 30 Oct 2015 15:59:27 -0700 Subject: [PATCH 4/6] Accepted baselines. --- .../reference/ES3For-ofTypeCheck4.js | 4 +- .../reference/ES3For-ofTypeCheck6.js | 4 +- tests/baselines/reference/ES5For-of24.js | 6 +-- tests/baselines/reference/ES5For-of25.js | 4 +- tests/baselines/reference/ES5For-of25.js.map | 2 +- .../reference/ES5For-of25.sourcemap.txt | 50 +++++++++---------- tests/baselines/reference/ES5For-of30.js | 4 +- .../reference/ES5For-ofTypeCheck11.js | 4 +- .../reference/ES5For-ofTypeCheck3.js | 4 +- .../reference/ES5For-ofTypeCheck4.js | 4 +- .../reference/ES5For-ofTypeCheck5.js | 4 +- .../reference/ES5For-ofTypeCheck6.js | 4 +- .../reference/ES5For-ofTypeCheck7.js | 4 +- .../reference/ES5For-ofTypeCheck8.js | 4 +- .../reference/ES5For-ofTypeCheck9.js | 4 +- .../argumentsObjectIterator01_ES5.js | 4 +- ...ariableDeclarationBindingPatterns01_ES5.js | 24 ++++----- tests/baselines/reference/for-of58.js | 4 +- .../reference/parserES5ForOfStatement10.js | 4 +- .../reference/parserES5ForOfStatement11.js | 4 +- .../reference/parserES5ForOfStatement12.js | 4 +- .../reference/parserES5ForOfStatement13.js | 4 +- .../reference/parserES5ForOfStatement14.js | 4 +- .../reference/parserES5ForOfStatement15.js | 4 +- .../reference/parserES5ForOfStatement16.js | 4 +- .../reference/parserES5ForOfStatement18.js | 4 +- .../reference/parserES5ForOfStatement2.js | 4 +- .../reference/parserES5ForOfStatement21.js | 4 +- .../reference/parserES5ForOfStatement3.js | 4 +- .../reference/parserES5ForOfStatement4.js | 4 +- .../reference/parserES5ForOfStatement5.js | 4 +- .../reference/parserES5ForOfStatement6.js | 4 +- .../reference/parserES5ForOfStatement7.js | 4 +- .../reference/parserES5ForOfStatement8.js | 4 +- .../reference/parserES5ForOfStatement9.js | 4 +- 35 files changed, 103 insertions(+), 103 deletions(-) diff --git a/tests/baselines/reference/ES3For-ofTypeCheck4.js b/tests/baselines/reference/ES3For-ofTypeCheck4.js index 7386a1967eb..a628a81c517 100644 --- a/tests/baselines/reference/ES3For-ofTypeCheck4.js +++ b/tests/baselines/reference/ES3For-ofTypeCheck4.js @@ -4,6 +4,6 @@ for (const v of union) { } //// [ES3For-ofTypeCheck4.js] var union; -for (var _i = 0; _i < union.length; _i++) { - var v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + var v = union_1[_i]; } diff --git a/tests/baselines/reference/ES3For-ofTypeCheck6.js b/tests/baselines/reference/ES3For-ofTypeCheck6.js index ddc11808b18..8b4a917eb85 100644 --- a/tests/baselines/reference/ES3For-ofTypeCheck6.js +++ b/tests/baselines/reference/ES3For-ofTypeCheck6.js @@ -4,6 +4,6 @@ for (var v of union) { } //// [ES3For-ofTypeCheck6.js] var union; -for (var _i = 0; _i < union.length; _i++) { - var v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + var v = union_1[_i]; } diff --git a/tests/baselines/reference/ES5For-of24.js b/tests/baselines/reference/ES5For-of24.js index cdc0876692f..ce4376ad648 100644 --- a/tests/baselines/reference/ES5For-of24.js +++ b/tests/baselines/reference/ES5For-of24.js @@ -6,7 +6,7 @@ for (var v of a) { //// [ES5For-of24.js] var a = [1, 2, 3]; -for (var _i = 0; _i < a.length; _i++) { - var v = a[_i]; - var a_1 = 0; +for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { + var v = a_1[_i]; + var a_2 = 0; } diff --git a/tests/baselines/reference/ES5For-of25.js b/tests/baselines/reference/ES5For-of25.js index 756c14fbe81..440c0b55efb 100644 --- a/tests/baselines/reference/ES5For-of25.js +++ b/tests/baselines/reference/ES5For-of25.js @@ -7,8 +7,8 @@ for (var v of a) { //// [ES5For-of25.js] var a = [1, 2, 3]; -for (var _i = 0; _i < a.length; _i++) { - var v = a[_i]; +for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { + var v = a_1[_i]; v; a; } diff --git a/tests/baselines/reference/ES5For-of25.js.map b/tests/baselines/reference/ES5For-of25.js.map index cc31767128b..1c4d8c2101f 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,EAAV,aAAK,EAAL,IAAU,CAAC;IAAX,IAAI,CAAC,GAAI,CAAC,IAAL;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,EAAV,eAAK,EAAL,IAAU,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 623627fde20..453eef4ee46 100644 --- a/tests/baselines/reference/ES5For-of25.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of25.sourcemap.txt @@ -21,7 +21,7 @@ sourceFile:ES5For-of25.ts 10> ^ 11> ^ 12> ^ -13> ^^^^^^^^^^^^^^^^^^^^^^-> +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >var 3 > a @@ -47,17 +47,19 @@ sourceFile:ES5For-of25.ts 11>Emitted(1, 18) Source(1, 18) + SourceIndex(0) 12>Emitted(1, 19) Source(1, 19) + SourceIndex(0) --- ->>>for (var _i = 0; _i < a.length; _i++) { +>>>for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { 1-> 2 >^^^ 3 > ^ 4 > ^ 5 > ^^^^^^^^^^ 6 > ^^ -7 > ^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^ -10> ^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ 1-> > 2 >for @@ -65,40 +67,38 @@ sourceFile:ES5For-of25.ts 4 > (var v of 5 > a 6 > -7 > var v -8 > -9 > var v of a -10> ) +7 > a +8 > +9 > var v +10> +11> var v of a +12> ) 1->Emitted(2, 1) Source(2, 1) + SourceIndex(0) 2 >Emitted(2, 4) Source(2, 4) + SourceIndex(0) 3 >Emitted(2, 5) Source(2, 5) + SourceIndex(0) 4 >Emitted(2, 6) Source(2, 15) + SourceIndex(0) 5 >Emitted(2, 16) Source(2, 16) + SourceIndex(0) -6 >Emitted(2, 18) Source(2, 6) + SourceIndex(0) -7 >Emitted(2, 31) Source(2, 11) + SourceIndex(0) -8 >Emitted(2, 33) Source(2, 6) + SourceIndex(0) -9 >Emitted(2, 37) Source(2, 16) + SourceIndex(0) -10>Emitted(2, 38) Source(2, 17) + 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) +11>Emitted(2, 48) Source(2, 16) + SourceIndex(0) +12>Emitted(2, 49) Source(2, 17) + SourceIndex(0) --- ->>> var v = a[_i]; +>>> var v = a_1[_i]; 1 >^^^^ 2 > ^^^^ 3 > ^ -4 > ^^^ -5 > ^ -6 > ^^^^ +4 > ^^^^^^^^^^ 1 > 2 > var 3 > v -4 > of -5 > a -6 > +4 > 1 >Emitted(3, 5) Source(2, 6) + SourceIndex(0) 2 >Emitted(3, 9) Source(2, 10) + SourceIndex(0) 3 >Emitted(3, 10) Source(2, 11) + SourceIndex(0) -4 >Emitted(3, 13) Source(2, 15) + SourceIndex(0) -5 >Emitted(3, 14) Source(2, 16) + SourceIndex(0) -6 >Emitted(3, 18) Source(2, 11) + SourceIndex(0) +4 >Emitted(3, 20) Source(2, 11) + SourceIndex(0) --- >>> v; 1 >^^^^ diff --git a/tests/baselines/reference/ES5For-of30.js b/tests/baselines/reference/ES5For-of30.js index 2a1dc5a3399..fead25e7cf0 100644 --- a/tests/baselines/reference/ES5For-of30.js +++ b/tests/baselines/reference/ES5For-of30.js @@ -9,8 +9,8 @@ for ([a = 1, b = ""] of tuple) { //// [ES5For-of30.js] var a, b; var tuple = [2, "3"]; -for (var _i = 0; _i < tuple.length; _i++) { - _a = tuple[_i], _b = _a[0], a = _b === void 0 ? 1 : _b, _c = _a[1], b = _c === void 0 ? "" : _c; +for (var _i = 0, tuple_1 = tuple; _i < tuple_1.length; _i++) { + _a = tuple_1[_i], _b = _a[0], a = _b === void 0 ? 1 : _b, _c = _a[1], b = _c === void 0 ? "" : _c; a; b; } diff --git a/tests/baselines/reference/ES5For-ofTypeCheck11.js b/tests/baselines/reference/ES5For-ofTypeCheck11.js index c0e46a45452..ce439427755 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck11.js +++ b/tests/baselines/reference/ES5For-ofTypeCheck11.js @@ -6,6 +6,6 @@ for (v of union) { } //// [ES5For-ofTypeCheck11.js] var union; var v; -for (var _i = 0; _i < union.length; _i++) { - v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + v = union_1[_i]; } diff --git a/tests/baselines/reference/ES5For-ofTypeCheck3.js b/tests/baselines/reference/ES5For-ofTypeCheck3.js index 76d8237997b..61a60727cba 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck3.js +++ b/tests/baselines/reference/ES5For-ofTypeCheck3.js @@ -4,6 +4,6 @@ for (var v of tuple) { } //// [ES5For-ofTypeCheck3.js] var tuple = ["", 0]; -for (var _i = 0; _i < tuple.length; _i++) { - var v = tuple[_i]; +for (var _i = 0, tuple_1 = tuple; _i < tuple_1.length; _i++) { + var v = tuple_1[_i]; } diff --git a/tests/baselines/reference/ES5For-ofTypeCheck4.js b/tests/baselines/reference/ES5For-ofTypeCheck4.js index 630bc869c58..6240b6a799a 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck4.js +++ b/tests/baselines/reference/ES5For-ofTypeCheck4.js @@ -4,6 +4,6 @@ for (const v of union) { } //// [ES5For-ofTypeCheck4.js] var union; -for (var _i = 0; _i < union.length; _i++) { - var v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + var v = union_1[_i]; } diff --git a/tests/baselines/reference/ES5For-ofTypeCheck5.js b/tests/baselines/reference/ES5For-ofTypeCheck5.js index 2e6b47f779d..0d285d67d8b 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck5.js +++ b/tests/baselines/reference/ES5For-ofTypeCheck5.js @@ -4,6 +4,6 @@ for (var v of union) { } //// [ES5For-ofTypeCheck5.js] var union; -for (var _i = 0; _i < union.length; _i++) { - var v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + var v = union_1[_i]; } diff --git a/tests/baselines/reference/ES5For-ofTypeCheck6.js b/tests/baselines/reference/ES5For-ofTypeCheck6.js index 9249020b9d4..c99fd415b23 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck6.js +++ b/tests/baselines/reference/ES5For-ofTypeCheck6.js @@ -4,6 +4,6 @@ for (var v of union) { } //// [ES5For-ofTypeCheck6.js] var union; -for (var _i = 0; _i < union.length; _i++) { - var v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + var v = union_1[_i]; } diff --git a/tests/baselines/reference/ES5For-ofTypeCheck7.js b/tests/baselines/reference/ES5For-ofTypeCheck7.js index d5b74a24728..1bd360e5132 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck7.js +++ b/tests/baselines/reference/ES5For-ofTypeCheck7.js @@ -4,6 +4,6 @@ for (var v of union) { } //// [ES5For-ofTypeCheck7.js] var union; -for (var _i = 0; _i < union.length; _i++) { - var v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + var v = union_1[_i]; } diff --git a/tests/baselines/reference/ES5For-ofTypeCheck8.js b/tests/baselines/reference/ES5For-ofTypeCheck8.js index d73aea1cb7b..ae4a823a18c 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck8.js +++ b/tests/baselines/reference/ES5For-ofTypeCheck8.js @@ -6,6 +6,6 @@ for (v of union) { } //// [ES5For-ofTypeCheck8.js] var union; var v; -for (var _i = 0; _i < union.length; _i++) { - v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + v = union_1[_i]; } diff --git a/tests/baselines/reference/ES5For-ofTypeCheck9.js b/tests/baselines/reference/ES5For-ofTypeCheck9.js index 6c7465d10ec..3e18c2da31f 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck9.js +++ b/tests/baselines/reference/ES5For-ofTypeCheck9.js @@ -4,6 +4,6 @@ for (let v of union) { } //// [ES5For-ofTypeCheck9.js] var union; -for (var _i = 0; _i < union.length; _i++) { - var v = union[_i]; +for (var _i = 0, union_1 = union; _i < union_1.length; _i++) { + var v = union_1[_i]; } diff --git a/tests/baselines/reference/argumentsObjectIterator01_ES5.js b/tests/baselines/reference/argumentsObjectIterator01_ES5.js index bc51d6f5582..8378528dbf4 100644 --- a/tests/baselines/reference/argumentsObjectIterator01_ES5.js +++ b/tests/baselines/reference/argumentsObjectIterator01_ES5.js @@ -11,8 +11,8 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe //// [argumentsObjectIterator01_ES5.js] function doubleAndReturnAsArray(x, y, z) { var result = []; - for (var _i = 0; _i < arguments.length; _i++) { - var arg = arguments[_i]; + for (var _i = 0, arguments_1 = arguments; _i < arguments_1.length; _i++) { + var arg = arguments_1[_i]; result.push(arg + arg); } return result; diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js index 11c4f4e1807..52207ceda96 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.js @@ -80,22 +80,22 @@ })(); (function () { var ns = []; - for (var _i = 0; _i < ns.length; _i++) { - var _a = ns[_i]; + for (var _i = 0, ns_1 = ns; _i < ns_1.length; _i++) { + var _a = ns_1[_i]; } - for (var _b = 0; _b < ns.length; _b++) { - var _c = ns[_b]; + for (var _b = 0, ns_2 = ns; _b < ns_2.length; _b++) { + var _c = ns_2[_b]; } - for (var _d = 0; _d < ns.length; _d++) { - var _e = ns[_d]; + for (var _d = 0, ns_3 = ns; _d < ns_3.length; _d++) { + var _e = ns_3[_d]; } - for (var _f = 0; _f < ns.length; _f++) { - var _g = ns[_f]; + for (var _f = 0, ns_4 = ns; _f < ns_4.length; _f++) { + var _g = ns_4[_f]; } - for (var _h = 0; _h < ns.length; _h++) { - var _j = ns[_h]; + for (var _h = 0, ns_5 = ns; _h < ns_5.length; _h++) { + var _j = ns_5[_h]; } - for (var _k = 0; _k < ns.length; _k++) { - var _l = ns[_k]; + for (var _k = 0, ns_6 = ns; _k < ns_6.length; _k++) { + var _l = ns_6[_k]; } })(); diff --git a/tests/baselines/reference/for-of58.js b/tests/baselines/reference/for-of58.js index 196d2d4a15d..6f738a59142 100644 --- a/tests/baselines/reference/for-of58.js +++ b/tests/baselines/reference/for-of58.js @@ -14,8 +14,8 @@ for (let num of array) { //// [for-of58.js] var array = [1, 2, 3]; var sum = 0; -for (var _i = 0; _i < array.length; _i++) { - var num = array[_i]; +for (var _i = 0, array_1 = array; _i < array_1.length; _i++) { + var num = array_1[_i]; if (sum === 0) { array = [4, 5, 6]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement10.js b/tests/baselines/reference/parserES5ForOfStatement10.js index cac70523022..36c505b0a12 100644 --- a/tests/baselines/reference/parserES5ForOfStatement10.js +++ b/tests/baselines/reference/parserES5ForOfStatement10.js @@ -3,6 +3,6 @@ for (const v of X) { } //// [parserES5ForOfStatement10.js] -for (var _i = 0; _i < X.length; _i++) { - var v = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var v = X_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement11.js b/tests/baselines/reference/parserES5ForOfStatement11.js index 40e4ca68d6b..e3bac1584fc 100644 --- a/tests/baselines/reference/parserES5ForOfStatement11.js +++ b/tests/baselines/reference/parserES5ForOfStatement11.js @@ -3,6 +3,6 @@ for (const [a, b] of X) { } //// [parserES5ForOfStatement11.js] -for (var _i = 0; _i < X.length; _i++) { - var _a = X[_i], a = _a[0], b = _a[1]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var _a = X_1[_i], a = _a[0], b = _a[1]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement12.js b/tests/baselines/reference/parserES5ForOfStatement12.js index f877ebdb757..2a43ca2dea3 100644 --- a/tests/baselines/reference/parserES5ForOfStatement12.js +++ b/tests/baselines/reference/parserES5ForOfStatement12.js @@ -3,6 +3,6 @@ for (const {a, b} of X) { } //// [parserES5ForOfStatement12.js] -for (var _i = 0; _i < X.length; _i++) { - var _a = X[_i], a = _a.a, b = _a.b; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var _a = X_1[_i], a = _a.a, b = _a.b; } diff --git a/tests/baselines/reference/parserES5ForOfStatement13.js b/tests/baselines/reference/parserES5ForOfStatement13.js index 45199480518..2f1f280090f 100644 --- a/tests/baselines/reference/parserES5ForOfStatement13.js +++ b/tests/baselines/reference/parserES5ForOfStatement13.js @@ -3,6 +3,6 @@ for (let {a, b} of X) { } //// [parserES5ForOfStatement13.js] -for (var _i = 0; _i < X.length; _i++) { - var _a = X[_i], a = _a.a, b = _a.b; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var _a = X_1[_i], a = _a.a, b = _a.b; } diff --git a/tests/baselines/reference/parserES5ForOfStatement14.js b/tests/baselines/reference/parserES5ForOfStatement14.js index d05fdb96e57..cb753328937 100644 --- a/tests/baselines/reference/parserES5ForOfStatement14.js +++ b/tests/baselines/reference/parserES5ForOfStatement14.js @@ -3,6 +3,6 @@ for (let [a, b] of X) { } //// [parserES5ForOfStatement14.js] -for (var _i = 0; _i < X.length; _i++) { - var _a = X[_i], a = _a[0], b = _a[1]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var _a = X_1[_i], a = _a[0], b = _a[1]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement15.js b/tests/baselines/reference/parserES5ForOfStatement15.js index 0af74961145..c7c4db351a6 100644 --- a/tests/baselines/reference/parserES5ForOfStatement15.js +++ b/tests/baselines/reference/parserES5ForOfStatement15.js @@ -3,6 +3,6 @@ for (var [a, b] of X) { } //// [parserES5ForOfStatement15.js] -for (var _i = 0; _i < X.length; _i++) { - var _a = X[_i], a = _a[0], b = _a[1]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var _a = X_1[_i], a = _a[0], b = _a[1]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement16.js b/tests/baselines/reference/parserES5ForOfStatement16.js index 1e7c6e005a8..149b6ce3df7 100644 --- a/tests/baselines/reference/parserES5ForOfStatement16.js +++ b/tests/baselines/reference/parserES5ForOfStatement16.js @@ -3,6 +3,6 @@ for (var {a, b} of X) { } //// [parserES5ForOfStatement16.js] -for (var _i = 0; _i < X.length; _i++) { - var _a = X[_i], a = _a.a, b = _a.b; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var _a = X_1[_i], a = _a.a, b = _a.b; } diff --git a/tests/baselines/reference/parserES5ForOfStatement18.js b/tests/baselines/reference/parserES5ForOfStatement18.js index 905ba9c1d1e..0427adb52d8 100644 --- a/tests/baselines/reference/parserES5ForOfStatement18.js +++ b/tests/baselines/reference/parserES5ForOfStatement18.js @@ -2,6 +2,6 @@ for (var of of of) { } //// [parserES5ForOfStatement18.js] -for (var _i = 0; _i < of.length; _i++) { - var of = of[_i]; +for (var _i = 0, of_1 = of; _i < of_1.length; _i++) { + var of = of_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement2.js b/tests/baselines/reference/parserES5ForOfStatement2.js index 287602dfb9c..43b557d9c8f 100644 --- a/tests/baselines/reference/parserES5ForOfStatement2.js +++ b/tests/baselines/reference/parserES5ForOfStatement2.js @@ -3,6 +3,6 @@ for (var of X) { } //// [parserES5ForOfStatement2.js] -for (var _i = 0; _i < X.length; _i++) { - var _a = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var _a = X_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement21.js b/tests/baselines/reference/parserES5ForOfStatement21.js index dcdffbc3cf0..e5d7ebcac21 100644 --- a/tests/baselines/reference/parserES5ForOfStatement21.js +++ b/tests/baselines/reference/parserES5ForOfStatement21.js @@ -2,6 +2,6 @@ for (var of of) { } //// [parserES5ForOfStatement21.js] -for (var _i = 0; _i < of.length; _i++) { - var _a = of[_i]; +for (var _i = 0, of_1 = of; _i < of_1.length; _i++) { + var _a = of_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement3.js b/tests/baselines/reference/parserES5ForOfStatement3.js index a99e96a23b8..953a59fb9b8 100644 --- a/tests/baselines/reference/parserES5ForOfStatement3.js +++ b/tests/baselines/reference/parserES5ForOfStatement3.js @@ -3,6 +3,6 @@ for (var a, b of X) { } //// [parserES5ForOfStatement3.js] -for (var _i = 0; _i < X.length; _i++) { - var a = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var a = X_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement4.js b/tests/baselines/reference/parserES5ForOfStatement4.js index f1558005f20..8ad35187e51 100644 --- a/tests/baselines/reference/parserES5ForOfStatement4.js +++ b/tests/baselines/reference/parserES5ForOfStatement4.js @@ -3,6 +3,6 @@ for (var a = 1 of X) { } //// [parserES5ForOfStatement4.js] -for (var _i = 0; _i < X.length; _i++) { - var a = 1 = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var a = 1 = X_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement5.js b/tests/baselines/reference/parserES5ForOfStatement5.js index 328b2fba0a7..3138b05e499 100644 --- a/tests/baselines/reference/parserES5ForOfStatement5.js +++ b/tests/baselines/reference/parserES5ForOfStatement5.js @@ -3,6 +3,6 @@ for (var a: number of X) { } //// [parserES5ForOfStatement5.js] -for (var _i = 0; _i < X.length; _i++) { - var a = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var a = X_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement6.js b/tests/baselines/reference/parserES5ForOfStatement6.js index 15747b93ba9..75454de208e 100644 --- a/tests/baselines/reference/parserES5ForOfStatement6.js +++ b/tests/baselines/reference/parserES5ForOfStatement6.js @@ -3,6 +3,6 @@ for (var a = 1, b = 2 of X) { } //// [parserES5ForOfStatement6.js] -for (var _i = 0; _i < X.length; _i++) { - var a = 1 = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var a = 1 = X_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement7.js b/tests/baselines/reference/parserES5ForOfStatement7.js index 29e4de8787f..ef3a02e45eb 100644 --- a/tests/baselines/reference/parserES5ForOfStatement7.js +++ b/tests/baselines/reference/parserES5ForOfStatement7.js @@ -3,6 +3,6 @@ for (var a: number = 1, b: string = "" of X) { } //// [parserES5ForOfStatement7.js] -for (var _i = 0; _i < X.length; _i++) { - var a = 1 = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var a = 1 = X_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement8.js b/tests/baselines/reference/parserES5ForOfStatement8.js index 5c449fc6433..7aa61972601 100644 --- a/tests/baselines/reference/parserES5ForOfStatement8.js +++ b/tests/baselines/reference/parserES5ForOfStatement8.js @@ -3,6 +3,6 @@ for (var v of X) { } //// [parserES5ForOfStatement8.js] -for (var _i = 0; _i < X.length; _i++) { - var v = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var v = X_1[_i]; } diff --git a/tests/baselines/reference/parserES5ForOfStatement9.js b/tests/baselines/reference/parserES5ForOfStatement9.js index 6b63d58a88a..8202d2812c1 100644 --- a/tests/baselines/reference/parserES5ForOfStatement9.js +++ b/tests/baselines/reference/parserES5ForOfStatement9.js @@ -3,6 +3,6 @@ for (let v of X) { } //// [parserES5ForOfStatement9.js] -for (var _i = 0; _i < X.length; _i++) { - var v = X[_i]; +for (var _i = 0, X_1 = X; _i < X_1.length; _i++) { + var v = X_1[_i]; } From 982926a4c41032bc0abe43109ca9e374b12957be Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 30 Oct 2015 16:59:31 -0700 Subject: [PATCH 5/6] Moved test. --- .../for-of58.ts => statements/for-ofStatements/ES5for-of32.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/cases/conformance/{es6/for-ofStatements/for-of58.ts => statements/for-ofStatements/ES5for-of32.ts} (100%) diff --git a/tests/cases/conformance/es6/for-ofStatements/for-of58.ts b/tests/cases/conformance/statements/for-ofStatements/ES5for-of32.ts similarity index 100% rename from tests/cases/conformance/es6/for-ofStatements/for-of58.ts rename to tests/cases/conformance/statements/for-ofStatements/ES5for-of32.ts From d5dd69b7b6af655b94f81006143def9c12e8279d Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 30 Oct 2015 17:10:14 -0700 Subject: [PATCH 6/6] Accepted baselines. --- .../reference/{for-of58.js => ES5for-of32.js} | 4 ++-- tests/baselines/reference/ES5for-of32.symbols | 23 +++++++++++++++++++ .../{for-of58.types => ES5for-of32.types} | 2 +- tests/baselines/reference/for-of58.symbols | 23 ------------------- 4 files changed, 26 insertions(+), 26 deletions(-) rename tests/baselines/reference/{for-of58.js => ES5for-of32.js} (85%) create mode 100644 tests/baselines/reference/ES5for-of32.symbols rename tests/baselines/reference/{for-of58.types => ES5for-of32.types} (80%) delete mode 100644 tests/baselines/reference/for-of58.symbols diff --git a/tests/baselines/reference/for-of58.js b/tests/baselines/reference/ES5for-of32.js similarity index 85% rename from tests/baselines/reference/for-of58.js rename to tests/baselines/reference/ES5for-of32.js index 6f738a59142..7af7cc3874a 100644 --- a/tests/baselines/reference/for-of58.js +++ b/tests/baselines/reference/ES5for-of32.js @@ -1,4 +1,4 @@ -//// [for-of58.ts] +//// [ES5for-of32.ts] var array = [1,2,3]; var sum = 0; @@ -11,7 +11,7 @@ for (let num of array) { sum += num; } -//// [for-of58.js] +//// [ES5for-of32.js] var array = [1, 2, 3]; var sum = 0; for (var _i = 0, array_1 = array; _i < array_1.length; _i++) { diff --git a/tests/baselines/reference/ES5for-of32.symbols b/tests/baselines/reference/ES5for-of32.symbols new file mode 100644 index 00000000000..5672ad01109 --- /dev/null +++ b/tests/baselines/reference/ES5for-of32.symbols @@ -0,0 +1,23 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5for-of32.ts === + +var array = [1,2,3]; +>array : Symbol(array, Decl(ES5for-of32.ts, 1, 3)) + +var sum = 0; +>sum : Symbol(sum, Decl(ES5for-of32.ts, 2, 3)) + +for (let num of array) { +>num : Symbol(num, Decl(ES5for-of32.ts, 4, 8)) +>array : Symbol(array, Decl(ES5for-of32.ts, 1, 3)) + + if (sum === 0) { +>sum : Symbol(sum, Decl(ES5for-of32.ts, 2, 3)) + + array = [4,5,6] +>array : Symbol(array, Decl(ES5for-of32.ts, 1, 3)) + } + + sum += num; +>sum : Symbol(sum, Decl(ES5for-of32.ts, 2, 3)) +>num : Symbol(num, Decl(ES5for-of32.ts, 4, 8)) +} diff --git a/tests/baselines/reference/for-of58.types b/tests/baselines/reference/ES5for-of32.types similarity index 80% rename from tests/baselines/reference/for-of58.types rename to tests/baselines/reference/ES5for-of32.types index b82fdfd8483..6fe5ba2008b 100644 --- a/tests/baselines/reference/for-of58.types +++ b/tests/baselines/reference/ES5for-of32.types @@ -1,4 +1,4 @@ -=== tests/cases/conformance/es6/for-ofStatements/for-of58.ts === +=== tests/cases/conformance/statements/for-ofStatements/ES5for-of32.ts === var array = [1,2,3]; >array : number[] diff --git a/tests/baselines/reference/for-of58.symbols b/tests/baselines/reference/for-of58.symbols deleted file mode 100644 index cb7fa87e22d..00000000000 --- a/tests/baselines/reference/for-of58.symbols +++ /dev/null @@ -1,23 +0,0 @@ -=== tests/cases/conformance/es6/for-ofStatements/for-of58.ts === - -var array = [1,2,3]; ->array : Symbol(array, Decl(for-of58.ts, 1, 3)) - -var sum = 0; ->sum : Symbol(sum, Decl(for-of58.ts, 2, 3)) - -for (let num of array) { ->num : Symbol(num, Decl(for-of58.ts, 4, 8)) ->array : Symbol(array, Decl(for-of58.ts, 1, 3)) - - if (sum === 0) { ->sum : Symbol(sum, Decl(for-of58.ts, 2, 3)) - - array = [4,5,6] ->array : Symbol(array, Decl(for-of58.ts, 1, 3)) - } - - sum += num; ->sum : Symbol(sum, Decl(for-of58.ts, 2, 3)) ->num : Symbol(num, Decl(for-of58.ts, 4, 8)) -}