Skip to content

Commit 4d32650

Browse files
committed
Revert change to createTempVariable
1 parent 9288424 commit 4d32650

38 files changed

Lines changed: 226 additions & 208 deletions

src/compiler/emitter.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1580,6 +1580,7 @@ module ts {
15801580
var generatedBlockScopeNames: string[];
15811581

15821582
var extendsEmitted = false;
1583+
var tempCount = 0;
15831584
var tempVariables: Identifier[];
15841585
var tempParameters: Identifier[];
15851586
var externalImports: ExternalImportInfo[];
@@ -2089,7 +2090,15 @@ module ts {
20892090
// Create a temporary variable with a unique unused name. The forLoopVariable parameter signals that the
20902091
// name should be one that is appropriate for a for loop variable.
20912092
function createTempVariable(location: Node, forLoopVariable?: boolean): Identifier {
2092-
var name = generateUniqueNameForLocation(location, /*baseName*/ forLoopVariable ? "_i" : "_a");
2093+
var name = forLoopVariable ? "_i" : undefined;
2094+
while (true) {
2095+
if (name && !isExistingName(location, name)) {
2096+
break;
2097+
}
2098+
// _a .. _h, _j ... _z, _0, _1, ...
2099+
name = "_" + (tempCount < 25 ? String.fromCharCode(tempCount + (tempCount < 8 ? 0 : 1) + CharacterCodes.a) : tempCount - 25);
2100+
tempCount++;
2101+
}
20932102
var result = <Identifier>createSynthesizedNode(SyntaxKind.Identifier);
20942103
result.text = name;
20952104
return result;
@@ -4259,8 +4268,10 @@ module ts {
42594268
}
42604269

42614270
function emitSignatureAndBody(node: FunctionLikeDeclaration) {
4271+
var saveTempCount = tempCount;
42624272
var saveTempVariables = tempVariables;
42634273
var saveTempParameters = tempParameters;
4274+
tempCount = 0;
42644275
tempVariables = undefined;
42654276
tempParameters = undefined;
42664277

@@ -4299,6 +4310,7 @@ module ts {
42994310

43004311
exitNameScope(popFrame);
43014312

4313+
tempCount = saveTempCount;
43024314
tempVariables = saveTempVariables;
43034315
tempParameters = saveTempParameters;
43044316
}
@@ -4613,8 +4625,10 @@ module ts {
46134625
}
46144626

46154627
function emitConstructorOfClass() {
4628+
var saveTempCount = tempCount;
46164629
var saveTempVariables = tempVariables;
46174630
var saveTempParameters = tempParameters;
4631+
tempCount = 0;
46184632
tempVariables = undefined;
46194633
tempParameters = undefined;
46204634

@@ -4683,6 +4697,7 @@ module ts {
46834697

46844698
exitNameScope(popFrame);
46854699

4700+
tempCount = saveTempCount;
46864701
tempVariables = saveTempVariables;
46874702
tempParameters = saveTempParameters;
46884703
}
@@ -4810,13 +4825,16 @@ module ts {
48104825
emitEnd(node.name);
48114826
write(") ");
48124827
if (node.body.kind === SyntaxKind.ModuleBlock) {
4828+
var saveTempCount = tempCount;
48134829
var saveTempVariables = tempVariables;
4830+
tempCount = 0;
48144831
tempVariables = undefined;
48154832
var popFrame = enterNameScope();
48164833

48174834
emit(node.body);
48184835

48194836
exitNameScope(popFrame);
4837+
tempCount = saveTempCount;
48204838
tempVariables = saveTempVariables;
48214839
}
48224840
else {

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_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
16-
var _v = _a_1[_i_1];
15+
for (var _i = 0, _b = []; _i < _b.length; _i++) {
16+
var _v = _b[_i];
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_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
18-
var _v = _a_1[_i_1];
17+
for (var _i = 0, _a = []; _i < _a.length; _i++) {
18+
var _v = _a[_i];
1919
_v;
2020
}
2121
}

tests/baselines/reference/ES5For-of21.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ for (let v of []) {
66
//// [ES5For-of21.js]
77
for (var _i = 0, _a = []; _i < _a.length; _i++) {
88
var v = _a[_i];
9-
for (var _i_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
10-
var _i_2 = _a_1[_i_1];
9+
for (var _b = 0, _c = []; _b < _c.length; _b++) {
10+
var _i = _c[_b];
1111
}
1212
}

tests/baselines/reference/ES5For-of5.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ for (var _a of []) {
44
}
55

66
//// [ES5For-of5.js]
7-
for (var _i = 0, _a_1 = []; _i < _a_1.length; _i++) {
8-
var _a = _a_1[_i];
7+
for (var _i = 0, _b = []; _i < _b.length; _i++) {
8+
var _a = _b[_i];
99
var x = _a;
1010
}

tests/baselines/reference/ES5For-of7.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 w = _a[_i];
1313
var x = w;
1414
}
15-
for (var _i_1 = 0, _a_1 = []; _i_1 < _a_1.length; _i_1++) {
16-
var v = _a_1[_i_1];
15+
for (var _i = 0, _b = []; _i < _b.length; _i++) {
16+
var v = _b[_i];
1717
var x = [w, v];
1818
}

tests/baselines/reference/callWithSpread.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ obj.foo.apply(obj, [1, 2].concat(a));
8181
obj.foo.apply(obj, [1, 2].concat(a, ["abc"]));
8282
xa[1].foo(1, 2, "abc");
8383
(_a = xa[1]).foo.apply(_a, [1, 2].concat(a));
84-
(_a_1 = xa[1]).foo.apply(_a_1, [1, 2].concat(a, ["abc"]));
85-
(_a_2 = xa[1]).foo.apply(_a_2, [1, 2, "abc"]);
84+
(_b = xa[1]).foo.apply(_b, [1, 2].concat(a, ["abc"]));
85+
(_c = xa[1]).foo.apply(_c, [1, 2, "abc"]);
8686
var C = (function () {
8787
function C(x, y) {
8888
var z = [];
@@ -114,4 +114,4 @@ var D = (function (_super) {
114114
})(C);
115115
// Only supported in when target is ES6
116116
var c = new C(1, 2, ...a);
117-
var _a, _a_1, _a_2;
117+
var _a, _b, _c;

tests/baselines/reference/collisionRestParameterArrowFunctions.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ var f2NoError = () => {
1616
//// [collisionRestParameterArrowFunctions.js]
1717
var f1 = function (_i) {
1818
var restParameters = [];
19-
for (var _i_1 = 1; _i_1 < arguments.length; _i_1++) {
20-
restParameters[_i_1 - 1] = arguments[_i_1];
19+
for (var _a = 1; _a < arguments.length; _a++) {
20+
restParameters[_a - 1] = arguments[_a];
2121
}
2222
var _i = 10; // no error
2323
};
@@ -26,8 +26,8 @@ var f1NoError = function (_i) {
2626
};
2727
var f2 = function () {
2828
var restParameters = [];
29-
for (var _i_1 = 0; _i_1 < arguments.length; _i_1++) {
30-
restParameters[_i_1 - 0] = arguments[_i_1];
29+
for (var _a = 0; _a < arguments.length; _a++) {
30+
restParameters[_a - 0] = arguments[_a];
3131
}
3232
var _i = 10; // No Error
3333
};

tests/baselines/reference/collisionRestParameterClassConstructor.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ declare class c6NoError {
7171
var c1 = (function () {
7272
function c1(_i) {
7373
var restParameters = [];
74-
for (var _i_1 = 1; _i_1 < arguments.length; _i_1++) {
75-
restParameters[_i_1 - 1] = arguments[_i_1];
74+
for (var _a = 1; _a < arguments.length; _a++) {
75+
restParameters[_a - 1] = arguments[_a];
7676
}
7777
var _i = 10; // no error
7878
}
@@ -87,8 +87,8 @@ var c1NoError = (function () {
8787
var c2 = (function () {
8888
function c2() {
8989
var restParameters = [];
90-
for (var _i_1 = 0; _i_1 < arguments.length; _i_1++) {
91-
restParameters[_i_1 - 0] = arguments[_i_1];
90+
for (var _a = 0; _a < arguments.length; _a++) {
91+
restParameters[_a - 0] = arguments[_a];
9292
}
9393
var _i = 10; // no error
9494
}
@@ -103,8 +103,8 @@ var c2NoError = (function () {
103103
var c3 = (function () {
104104
function c3(_i) {
105105
var restParameters = [];
106-
for (var _i_1 = 1; _i_1 < arguments.length; _i_1++) {
107-
restParameters[_i_1 - 1] = arguments[_i_1];
106+
for (var _a = 1; _a < arguments.length; _a++) {
107+
restParameters[_a - 1] = arguments[_a];
108108
}
109109
this._i = _i;
110110
var _i = 10; // no error
@@ -121,8 +121,8 @@ var c3NoError = (function () {
121121
var c5 = (function () {
122122
function c5(_i) {
123123
var rest = [];
124-
for (var _i_1 = 1; _i_1 < arguments.length; _i_1++) {
125-
rest[_i_1 - 1] = arguments[_i_1];
124+
for (var _a = 1; _a < arguments.length; _a++) {
125+
rest[_a - 1] = arguments[_a];
126126
}
127127
var _i; // no error
128128
}

tests/baselines/reference/collisionRestParameterClassMethod.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ var c1 = (function () {
4444
}
4545
c1.prototype.foo = function (_i) {
4646
var restParameters = [];
47-
for (var _i_1 = 1; _i_1 < arguments.length; _i_1++) {
48-
restParameters[_i_1 - 1] = arguments[_i_1];
47+
for (var _a = 1; _a < arguments.length; _a++) {
48+
restParameters[_a - 1] = arguments[_a];
4949
}
5050
var _i = 10; // no error
5151
};
@@ -54,8 +54,8 @@ var c1 = (function () {
5454
};
5555
c1.prototype.f4 = function (_i) {
5656
var rest = [];
57-
for (var _i_1 = 1; _i_1 < arguments.length; _i_1++) {
58-
rest[_i_1 - 1] = arguments[_i_1];
57+
for (var _a = 1; _a < arguments.length; _a++) {
58+
rest[_a - 1] = arguments[_a];
5959
}
6060
var _i; // no error
6161
};
@@ -69,8 +69,8 @@ var c3 = (function () {
6969
}
7070
c3.prototype.foo = function () {
7171
var restParameters = [];
72-
for (var _i_1 = 0; _i_1 < arguments.length; _i_1++) {
73-
restParameters[_i_1 - 0] = arguments[_i_1];
72+
for (var _a = 0; _a < arguments.length; _a++) {
73+
restParameters[_a - 0] = arguments[_a];
7474
}
7575
var _i = 10; // no error
7676
};

0 commit comments

Comments
 (0)