Skip to content

Commit 8a19e4b

Browse files
authored
Merge pull request microsoft#30726 from Microsoft/fix30653
Treat hoisted temp variables as a custom prologue.
2 parents 5869662 + f04a40d commit 8a19e4b

26 files changed

+146
-66
lines changed

src/compiler/transformer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,8 @@ namespace ts {
327327
createVariableDeclarationList(lexicalEnvironmentVariableDeclarations)
328328
);
329329

330+
setEmitFlags(statement, EmitFlags.CustomPrologue);
331+
330332
if (!statements) {
331333
statements = [statement];
332334
}

tests/baselines/reference/asyncArrowFunction11_es5.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ var A = /** @class */ (function () {
5353
args[_i] = arguments[_i];
5454
}
5555
return __awaiter(_this, void 0, void 0, function () {
56-
var _a, obj;
56+
var obj;
57+
var _a;
5758
var _this = this;
5859
return __generator(this, function (_b) {
5960
switch (_b.label) {

tests/baselines/reference/asyncArrowFunction8_es5.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ var foo = async (): Promise<void> => {
66
//// [asyncArrowFunction8_es5.js]
77
var _this = this;
88
var foo = function () { return __awaiter(_this, void 0, void 0, function () {
9-
var _a, v;
9+
var v;
10+
var _a;
1011
return __generator(this, function (_b) {
1112
switch (_b.label) {
1213
case 0:

tests/baselines/reference/asyncFunctionDeclaration9_es5.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ async function foo(): Promise<void> {
66
//// [asyncFunctionDeclaration9_es5.js]
77
function foo() {
88
return __awaiter(this, void 0, void 0, function () {
9-
var _a, v;
9+
var v;
10+
var _a;
1011
return __generator(this, function (_b) {
1112
switch (_b.label) {
1213
case 0:

tests/baselines/reference/bindingPatternOmittedExpressionNesting.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ export let [,,[,[],,[],]] = undefined as any;
33

44
//// [bindingPatternOmittedExpressionNesting.js]
55
"use strict";
6-
exports.__esModule = true;
76
var _a, _b, _c, _d;
7+
exports.__esModule = true;
88
exports._e = (_a = undefined, _b = _a[2], _c = _b[1], _d = _b[3]);
99

1010

tests/baselines/reference/blockScopedBindingsInDownlevelGenerator.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ var __values = (this && this.__values) || function (o) {
4545
};
4646
};
4747
function a() {
48-
var e_1, _a, _loop_1, _b, _c, i, e_1_1;
48+
var _loop_1, _a, _b, i, e_1_1;
49+
var e_1, _c;
4950
return __generator(this, function (_d) {
5051
switch (_d.label) {
5152
case 0:
@@ -64,17 +65,17 @@ function a() {
6465
_d.label = 1;
6566
case 1:
6667
_d.trys.push([1, 6, 7, 8]);
67-
_b = __values([1, 2, 3]), _c = _b.next();
68+
_a = __values([1, 2, 3]), _b = _a.next();
6869
_d.label = 2;
6970
case 2:
70-
if (!!_c.done) return [3 /*break*/, 5];
71-
i = _c.value;
71+
if (!!_b.done) return [3 /*break*/, 5];
72+
i = _b.value;
7273
return [5 /*yield**/, _loop_1(i)];
7374
case 3:
7475
_d.sent();
7576
_d.label = 4;
7677
case 4:
77-
_c = _b.next();
78+
_b = _a.next();
7879
return [3 /*break*/, 2];
7980
case 5: return [3 /*break*/, 8];
8081
case 6:
@@ -83,7 +84,7 @@ function a() {
8384
return [3 /*break*/, 8];
8485
case 7:
8586
try {
86-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
87+
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
8788
}
8889
finally { if (e_1) throw e_1.error; }
8990
return [7 /*endfinally*/];

tests/baselines/reference/compoundExponentiationAssignmentLHSIsValue.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,8 @@ _a = Math.pow(['', ''], value), '' = _a[0], '' = _a[1];
148148
var Derived = /** @class */ (function (_super) {
149149
__extends(Derived, _super);
150150
function Derived() {
151-
var _this = this;
152151
var _a;
153-
_this = _super.call(this) || this;
152+
var _this = _super.call(this) || this;
154153
(_a = _super.prototype). = Math.pow(_a., value);
155154
return _this;
156155
}

tests/baselines/reference/declarationEmitComputedNameCausesImportToBePainted.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ exports.__esModule = true;
2020
exports.Key = Symbol();
2121
//// [index.js]
2222
"use strict";
23-
exports.__esModule = true;
2423
var _a;
24+
exports.__esModule = true;
2525
var context_1 = require("./context");
2626
exports.context = (_a = {},
2727
_a[context_1.Key] = 'bar',

tests/baselines/reference/declarationEmitComputedNameConstEnumAlias.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ var EnumExample;
2424
exports["default"] = EnumExample;
2525
//// [index.js]
2626
"use strict";
27-
exports.__esModule = true;
2827
var _a;
28+
exports.__esModule = true;
2929
var EnumExample_1 = require("./EnumExample");
3030
exports["default"] = (_a = {},
3131
_a[EnumExample_1["default"].TEST] = {},

tests/baselines/reference/declarationEmitPrivateSymbolCausesVarDeclarationEmit2.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ exports.__esModule = true;
2525
exports.x = Symbol();
2626
//// [b.js]
2727
"use strict";
28-
exports.__esModule = true;
2928
var _a;
29+
exports.__esModule = true;
3030
var a_1 = require("./a");
3131
var C = /** @class */ (function () {
3232
function C() {
@@ -51,8 +51,8 @@ var __extends = (this && this.__extends) || (function () {
5151
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
5252
};
5353
})();
54-
exports.__esModule = true;
5554
var _a;
55+
exports.__esModule = true;
5656
var a_1 = require("./a");
5757
var b_1 = require("./b");
5858
var D = /** @class */ (function (_super) {

0 commit comments

Comments
 (0)