mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-10 01:43:59 -05:00
Emit 'for...of' statements with let/const initializers
This commit is contained in:
@@ -3497,7 +3497,7 @@ module ts {
|
||||
if (variableDeclarationList.declarations.length >= 1) {
|
||||
var decl = variableDeclarationList.declarations[0];
|
||||
// TODO handle binding patterns
|
||||
emit(decl.name);
|
||||
emit(decl);
|
||||
write(", ");
|
||||
}
|
||||
}
|
||||
@@ -3944,7 +3944,7 @@ module ts {
|
||||
}
|
||||
}
|
||||
else {
|
||||
var isLet = renameNonTopLevelLetAndConst(<Identifier>node.name);
|
||||
renameNonTopLevelLetAndConst(<Identifier>node.name);
|
||||
emitModuleMemberName(node);
|
||||
|
||||
var initializer = node.initializer;
|
||||
|
||||
10
tests/baselines/reference/ES5For-of13.js
Normal file
10
tests/baselines/reference/ES5For-of13.js
Normal file
@@ -0,0 +1,10 @@
|
||||
//// [ES5For-of13.ts]
|
||||
for (let v of []) {
|
||||
var x = v;
|
||||
}
|
||||
|
||||
//// [ES5For-of13.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
var x = v;
|
||||
}
|
||||
10
tests/baselines/reference/ES5For-of14.js
Normal file
10
tests/baselines/reference/ES5For-of14.js
Normal file
@@ -0,0 +1,10 @@
|
||||
//// [ES5For-of14.ts]
|
||||
for (const v of []) {
|
||||
var x = v;
|
||||
}
|
||||
|
||||
//// [ES5For-of14.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
var x = v;
|
||||
}
|
||||
17
tests/baselines/reference/ES5For-of15.js
Normal file
17
tests/baselines/reference/ES5For-of15.js
Normal file
@@ -0,0 +1,17 @@
|
||||
//// [ES5For-of15.ts]
|
||||
for (let v of []) {
|
||||
v;
|
||||
for (const v of []) {
|
||||
var x = v;
|
||||
}
|
||||
}
|
||||
|
||||
//// [ES5For-of15.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
v;
|
||||
for (var _v, _i_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
|
||||
_v = _a_1[_i_1];
|
||||
var x = _v;
|
||||
}
|
||||
}
|
||||
19
tests/baselines/reference/ES5For-of16.js
Normal file
19
tests/baselines/reference/ES5For-of16.js
Normal file
@@ -0,0 +1,19 @@
|
||||
//// [ES5For-of16.ts]
|
||||
for (let v of []) {
|
||||
v;
|
||||
for (let v of []) {
|
||||
var x = v;
|
||||
v++;
|
||||
}
|
||||
}
|
||||
|
||||
//// [ES5For-of16.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
v;
|
||||
for (var _v, _i_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
|
||||
_v = _a_1[_i_1];
|
||||
var x = _v;
|
||||
_v++;
|
||||
}
|
||||
}
|
||||
19
tests/baselines/reference/ES5For-of17.js
Normal file
19
tests/baselines/reference/ES5For-of17.js
Normal file
@@ -0,0 +1,19 @@
|
||||
//// [ES5For-of17.ts]
|
||||
for (let v of []) {
|
||||
v;
|
||||
for (let v of [v]) {
|
||||
var x = v;
|
||||
v++;
|
||||
}
|
||||
}
|
||||
|
||||
//// [ES5For-of17.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
v;
|
||||
for (var _v, _i_1 = 0, _a_1 = [_v]; _i_1 < _a_1.length; _i_1++) {
|
||||
_v = _a_1[_i_1];
|
||||
var x = _v;
|
||||
_v++;
|
||||
}
|
||||
}
|
||||
18
tests/baselines/reference/ES5For-of18.js
Normal file
18
tests/baselines/reference/ES5For-of18.js
Normal file
@@ -0,0 +1,18 @@
|
||||
//// [ES5For-of18.ts]
|
||||
for (let v of []) {
|
||||
v;
|
||||
}
|
||||
for (let v of []) {
|
||||
v;
|
||||
}
|
||||
|
||||
|
||||
//// [ES5For-of18.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
v;
|
||||
}
|
||||
for (var _v, _i_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
|
||||
_v = _a_1[_i_1];
|
||||
_v;
|
||||
}
|
||||
22
tests/baselines/reference/ES5For-of19.js
Normal file
22
tests/baselines/reference/ES5For-of19.js
Normal file
@@ -0,0 +1,22 @@
|
||||
//// [ES5For-of19.ts]
|
||||
for (let v of []) {
|
||||
v;
|
||||
function foo() {
|
||||
for (const v of []) {
|
||||
v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//// [ES5For-of19.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
v;
|
||||
function foo() {
|
||||
for (var _v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
_v = _a[_i];
|
||||
_v;
|
||||
}
|
||||
}
|
||||
}
|
||||
17
tests/baselines/reference/ES5For-of20.js
Normal file
17
tests/baselines/reference/ES5For-of20.js
Normal file
@@ -0,0 +1,17 @@
|
||||
//// [ES5For-of20.ts]
|
||||
for (let v of []) {
|
||||
let v;
|
||||
for (let v of [v]) {
|
||||
const v;
|
||||
}
|
||||
}
|
||||
|
||||
//// [ES5For-of20.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
var _v;
|
||||
for (var _v_1, _i_1 = 0, _a_1 = [_v_1]; _i_1 < _a_1.length; _i_1++) {
|
||||
_v_1 = _a_1[_i_1];
|
||||
var _v_2;
|
||||
}
|
||||
}
|
||||
12
tests/baselines/reference/ES5For-of21.js
Normal file
12
tests/baselines/reference/ES5For-of21.js
Normal file
@@ -0,0 +1,12 @@
|
||||
//// [ES5For-of21.ts]
|
||||
for (let v of []) {
|
||||
for (let _i of []) { }
|
||||
}
|
||||
|
||||
//// [ES5For-of21.js]
|
||||
for (var v, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
v = _a[_i];
|
||||
for (var _i_1, _i_2 = 0, _a_1 = []; _i_2 < _a_1.length; _i_2++) {
|
||||
_i_1 = _a_1[_i_2];
|
||||
}
|
||||
}
|
||||
@@ -404,7 +404,8 @@ function foo6() {
|
||||
}
|
||||
// TODO: once for-of is supported downlevel
|
||||
function foo7() {
|
||||
for (var _x of []) {
|
||||
for (var _x, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
_x = _a[_i];
|
||||
use(_x);
|
||||
}
|
||||
use(x);
|
||||
@@ -422,7 +423,8 @@ function foo9() {
|
||||
use(x);
|
||||
}
|
||||
function foo10() {
|
||||
for (var _x of []) {
|
||||
for (var _x, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
_x = _a[_i];
|
||||
use(_x);
|
||||
}
|
||||
use(x);
|
||||
|
||||
@@ -119,6 +119,7 @@ for (var _x_11 in []) {
|
||||
use(_x_11);
|
||||
}
|
||||
// TODO: update once for-of statements are supported downlevel
|
||||
for (var _x_12 of []) {
|
||||
for (var _x_12, _i = 0, _a = []; _i < _a.length; _i++) {
|
||||
_x_12 = _a[_i];
|
||||
use(_x_12);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,6 @@ for (var a = 1 of X) {
|
||||
}
|
||||
|
||||
//// [parserES5ForOfStatement4.js]
|
||||
for (var a, _i = 0, _a = X; _i < _a.length; _i++) {
|
||||
for (var a = 1, _i = 0, _a = X; _i < _a.length; _i++) {
|
||||
a = _a[_i];
|
||||
}
|
||||
|
||||
@@ -3,6 +3,6 @@ for (var a = 1, b = 2 of X) {
|
||||
}
|
||||
|
||||
//// [parserES5ForOfStatement6.js]
|
||||
for (var a, _i = 0, _a = X; _i < _a.length; _i++) {
|
||||
for (var a = 1, _i = 0, _a = X; _i < _a.length; _i++) {
|
||||
a = _a[_i];
|
||||
}
|
||||
|
||||
@@ -3,6 +3,6 @@ for (var a: number = 1, b: string = "" of X) {
|
||||
}
|
||||
|
||||
//// [parserES5ForOfStatement7.js]
|
||||
for (var a, _i = 0, _a = X; _i < _a.length; _i++) {
|
||||
for (var a = 1, _i = 0, _a = X; _i < _a.length; _i++) {
|
||||
a = _a[_i];
|
||||
}
|
||||
|
||||
@@ -63,7 +63,6 @@ for (const x in []) {
|
||||
use(x);
|
||||
}
|
||||
|
||||
// TODO: update once for-of statements are supported downlevel
|
||||
for (const x of []) {
|
||||
use(x);
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
for (let v of []) {
|
||||
var x = v;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
for (const v of []) {
|
||||
var x = v;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
for (let v of []) {
|
||||
v;
|
||||
for (const v of []) {
|
||||
var x = v;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
for (let v of []) {
|
||||
v;
|
||||
for (let v of []) {
|
||||
var x = v;
|
||||
v++;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
for (let v of []) {
|
||||
v;
|
||||
for (let v of [v]) {
|
||||
var x = v;
|
||||
v++;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
for (let v of []) {
|
||||
v;
|
||||
}
|
||||
for (let v of []) {
|
||||
v;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
for (let v of []) {
|
||||
v;
|
||||
function foo() {
|
||||
for (const v of []) {
|
||||
v;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
for (let v of []) {
|
||||
let v;
|
||||
for (let v of [v]) {
|
||||
const v;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
for (let v of []) {
|
||||
for (let _i of []) { }
|
||||
}
|
||||
Reference in New Issue
Block a user