Skip to content

Commit 4bb0587

Browse files
committed
Fix createTempVariable to always record the name in the currentScopeNames
1 parent 4d32650 commit 4bb0587

17 files changed

Lines changed: 65 additions & 24 deletions

src/compiler/emitter.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1684,7 +1684,11 @@ module ts {
16841684
else {
16851685
name = generateUniqueName(baseName, n => isExistingName(location, n));
16861686
}
1687-
1687+
1688+
return putNameInCurrentScopeNames(name);
1689+
}
1690+
1691+
function putNameInCurrentScopeNames(name: string): string {
16881692
if (!currentScopeNames) {
16891693
currentScopeNames = {};
16901694
}
@@ -2099,6 +2103,11 @@ module ts {
20992103
name = "_" + (tempCount < 25 ? String.fromCharCode(tempCount + (tempCount < 8 ? 0 : 1) + CharacterCodes.a) : tempCount - 25);
21002104
tempCount++;
21012105
}
2106+
2107+
// This is necessary so that a name generated via renameNonTopLevelLetAndConst will see the name
2108+
// we just generated.
2109+
putNameInCurrentScopeNames(name);
2110+
21022111
var result = <Identifier>createSynthesizedNode(SyntaxKind.Identifier);
21032112
result.text = name;
21042113
return result;

tests/baselines/reference/ES5For-of10.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ function foo() {
1313
}
1414
for (var _i = 0, _a = []; _i < _a.length; _i++) {
1515
foo().x = _a[_i];
16-
for (var _i_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
17-
foo().x = _a_1[_i_1];
16+
for (var _b = 0, _c = []; _b < _c.length; _b++) {
17+
foo().x = _c[_b];
1818
var p = foo().x;
1919
}
2020
}

tests/baselines/reference/ES5For-of15.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ for (let v of []) {
1010
for (var _i = 0, _a = []; _i < _a.length; _i++) {
1111
var v = _a[_i];
1212
v;
13-
for (var _i_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
14-
var _v = _a_1[_i_1];
13+
for (var _b = 0, _c = []; _b < _c.length; _b++) {
14+
var _v = _c[_b];
1515
var x = _v;
1616
}
1717
}

tests/baselines/reference/ES5For-of16.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ for (let v of []) {
1111
for (var _i = 0, _a = []; _i < _a.length; _i++) {
1212
var v = _a[_i];
1313
v;
14-
for (var _i_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
15-
var _v = _a_1[_i_1];
14+
for (var _b = 0, _c = []; _b < _c.length; _b++) {
15+
var _v = _c[_b];
1616
var x = _v;
1717
_v++;
1818
}

tests/baselines/reference/ES5For-of17.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ for (let v of []) {
1111
for (var _i = 0, _a = []; _i < _a.length; _i++) {
1212
var v = _a[_i];
1313
v;
14-
for (var _i_1 = 0, _a_1 = [v]; _i_1 < _a_1.length; _i_1++) {
15-
var _v = _a_1[_i_1];
14+
for (var _b = 0, _c = [v]; _b < _c.length; _b++) {
15+
var _v = _c[_b];
1616
var x = _v;
1717
_v++;
1818
}

tests/baselines/reference/ES5For-of18.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ for (var _i = 0, _a = []; _i < _a.length; _i++) {
1212
var v = _a[_i];
1313
v;
1414
}
15-
for (var _i = 0, _b = []; _i < _b.length; _i++) {
16-
var _v = _b[_i];
15+
for (var _b = 0, _c = []; _b < _c.length; _b++) {
16+
var _v = _c[_b];
1717
_v;
1818
}

tests/baselines/reference/ES5For-of19.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ for (var _i = 0, _a = []; _i < _a.length; _i++) {
1414
var v = _a[_i];
1515
v;
1616
function foo() {
17-
for (var _i = 0, _a = []; _i < _a.length; _i++) {
18-
var _v = _a[_i];
17+
for (var _b = 0, _c = []; _b < _c.length; _b++) {
18+
var _v = _c[_b];
1919
_v;
2020
}
2121
}

tests/baselines/reference/ES5For-of20.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ for (let v of []) {
1010
for (var _i = 0, _a = []; _i < _a.length; _i++) {
1111
var v = _a[_i];
1212
var _v;
13-
for (var _i_1 = 0, _a_1 = [v]; _i_1 < _a_1.length; _i_1++) {
14-
var _v_1 = _a_1[_i_1];
13+
for (var _b = 0, _c = [v]; _b < _c.length; _b++) {
14+
var _v_1 = _c[_b];
1515
var _v_2;
1616
}
1717
}

tests/baselines/reference/ES5For-of21.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ for (let v of []) {
77
for (var _i = 0, _a = []; _i < _a.length; _i++) {
88
var v = _a[_i];
99
for (var _b = 0, _c = []; _b < _c.length; _b++) {
10-
var _i = _c[_b];
10+
var _i_1 = _c[_b];
1111
}
1212
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//// [ES5For-of22.ts]
2+
for (var x of [1, 2, 3]) {
3+
let _a = 0;
4+
console.log(x);
5+
}
6+
7+
//// [ES5For-of22.js]
8+
for (var _i = 0, _a = [1, 2, 3]; _i < _a.length; _i++) {
9+
var x = _a[_i];
10+
var _a_1 = 0;
11+
console.log(x);
12+
}

0 commit comments

Comments
 (0)