Skip to content

Commit ece0b05

Browse files
committed
Hoist initial assignment to exported names in cjs to they are not blocked by bindings made by __exportStar
1 parent f1457c1 commit ece0b05

File tree

1,692 files changed

+8121
-4993
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,692 files changed

+8121
-4993
lines changed

src/compiler/transformers/module/module.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ namespace ts {
9696
if (shouldEmitUnderscoreUnderscoreESModule()) {
9797
append(statements, createUnderscoreUnderscoreESModule());
9898
}
99+
if (length(currentModuleInfo.exportedNames)) {
100+
append(statements, createExpressionStatement(reduceLeft(currentModuleInfo.exportedNames, (prev, nextId) => createAssignment(createPropertyAccess(createIdentifier("exports"), nextId), prev), createVoidZero() as Expression)))
101+
}
99102

100103
append(statements, visitNode(currentModuleInfo.externalHelpersImportDeclaration, sourceElementVisitor, isStatement));
101104
addRange(statements, visitNodes(node.statements, sourceElementVisitor, isStatement, statementOffset));
@@ -414,6 +417,9 @@ namespace ts {
414417
if (shouldEmitUnderscoreUnderscoreESModule()) {
415418
append(statements, createUnderscoreUnderscoreESModule());
416419
}
420+
if (length(currentModuleInfo.exportedNames)) {
421+
append(statements, createExpressionStatement(reduceLeft(currentModuleInfo.exportedNames, (prev, nextId) => createAssignment(createPropertyAccess(createIdentifier("exports"), nextId), prev), createVoidZero() as Expression)))
422+
}
417423

418424
// Visit each statement of the module body.
419425
append(statements, visitNode(currentModuleInfo.externalHelpersImportDeclaration, sourceElementVisitor, isStatement));
@@ -1188,7 +1194,7 @@ namespace ts {
11881194

11891195
variables = append(variables, variable);
11901196
}
1191-
else {
1197+
else if (variable.initializer) {
11921198
expressions = append(expressions, transformInitializedVariable(variable));
11931199
}
11941200
}

tests/baselines/reference/APISample_compile.js

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ compile(process.argv.slice(2), {
5353
* Please log a "breaking change" issue for any API breaking change affecting this issue
5454
*/
5555
exports.__esModule = true;
56+
exports.compile = void 0;
5657
var ts = require("typescript");
5758
function compile(fileNames, options) {
5859
var program = ts.createProgram(fileNames, options);

tests/baselines/reference/APISample_linter.js

+1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ fileNames.forEach(fileName => {
7878
* Please log a "breaking change" issue for any API breaking change affecting this issue
7979
*/
8080
exports.__esModule = true;
81+
exports.delint = void 0;
8182
var ts = require("typescript");
8283
function delint(sourceFile) {
8384
delintNode(sourceFile);

tests/baselines/reference/APISample_parseConfig.js

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export function createProgram(rootFiles: string[], compilerOptionsJson: string):
5050
* Please log a "breaking change" issue for any API breaking change affecting this issue
5151
*/
5252
exports.__esModule = true;
53+
exports.createProgram = void 0;
5354
var ts = require("typescript");
5455
function printError(error) {
5556
if (!error) {

tests/baselines/reference/ExportAssignment7.js

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export = B;
66

77
//// [ExportAssignment7.js]
88
"use strict";
9+
exports.C = void 0;
910
var C = /** @class */ (function () {
1011
function C() {
1112
}

tests/baselines/reference/ExportAssignment8.js

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export class C {
66

77
//// [ExportAssignment8.js]
88
"use strict";
9+
exports.C = void 0;
910
var C = /** @class */ (function () {
1011
function C() {
1112
}

tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedLocalVarsOfTheSameName.js

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export module A {
3232
//// [part1.js]
3333
"use strict";
3434
exports.__esModule = true;
35+
exports.A = void 0;
3536
var A;
3637
(function (A) {
3738
var Utils;
@@ -46,6 +47,7 @@ var A;
4647
//// [part2.js]
4748
"use strict";
4849
exports.__esModule = true;
50+
exports.A = void 0;
4951
var A;
5052
(function (A) {
5153
// collision with 'Origin' var in other part of merged module

tests/baselines/reference/aliasAssignments.js

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ y = moduleA; // should be error
1616
//// [aliasAssignments_moduleA.js]
1717
"use strict";
1818
exports.__esModule = true;
19+
exports.someClass = void 0;
1920
var someClass = /** @class */ (function () {
2021
function someClass() {
2122
}

tests/baselines/reference/aliasUsageInAccessorsOfClass.js

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class C2 {
3030
//// [aliasUsage1_backbone.js]
3131
"use strict";
3232
Object.defineProperty(exports, "__esModule", { value: true });
33+
exports.Model = void 0;
3334
var Model = /** @class */ (function () {
3435
function Model() {
3536
}
@@ -52,6 +53,7 @@ var __extends = (this && this.__extends) || (function () {
5253
};
5354
})();
5455
Object.defineProperty(exports, "__esModule", { value: true });
56+
exports.VisualizationModel = void 0;
5557
var Backbone = require("./aliasUsage1_backbone");
5658
var VisualizationModel = /** @class */ (function (_super) {
5759
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsageInArray.js

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ var xs2: typeof moduleA[] = [moduleA];
2424
//// [aliasUsageInArray_backbone.js]
2525
"use strict";
2626
exports.__esModule = true;
27+
exports.Model = void 0;
2728
var Model = /** @class */ (function () {
2829
function Model() {
2930
}
@@ -46,6 +47,7 @@ var __extends = (this && this.__extends) || (function () {
4647
};
4748
})();
4849
exports.__esModule = true;
50+
exports.VisualizationModel = void 0;
4951
var Backbone = require("./aliasUsageInArray_backbone");
5052
var VisualizationModel = /** @class */ (function (_super) {
5153
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsageInFunctionExpression.js

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ f = (x) => moduleA;
2323
//// [aliasUsageInFunctionExpression_backbone.js]
2424
"use strict";
2525
exports.__esModule = true;
26+
exports.Model = void 0;
2627
var Model = /** @class */ (function () {
2728
function Model() {
2829
}
@@ -45,6 +46,7 @@ var __extends = (this && this.__extends) || (function () {
4546
};
4647
})();
4748
exports.__esModule = true;
49+
exports.VisualizationModel = void 0;
4850
var Backbone = require("./aliasUsageInFunctionExpression_backbone");
4951
var VisualizationModel = /** @class */ (function (_super) {
5052
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsageInGenericFunction.js

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var r2 = foo({ a: <IHasVisualizationModel>null });
2727
//// [aliasUsageInGenericFunction_backbone.js]
2828
"use strict";
2929
exports.__esModule = true;
30+
exports.Model = void 0;
3031
var Model = /** @class */ (function () {
3132
function Model() {
3233
}
@@ -49,6 +50,7 @@ var __extends = (this && this.__extends) || (function () {
4950
};
5051
})();
5152
exports.__esModule = true;
53+
exports.VisualizationModel = void 0;
5254
var Backbone = require("./aliasUsageInGenericFunction_backbone");
5355
var VisualizationModel = /** @class */ (function (_super) {
5456
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsageInIndexerOfClass.js

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class N2 {
2929
//// [aliasUsageInIndexerOfClass_backbone.js]
3030
"use strict";
3131
exports.__esModule = true;
32+
exports.Model = void 0;
3233
var Model = /** @class */ (function () {
3334
function Model() {
3435
}
@@ -51,6 +52,7 @@ var __extends = (this && this.__extends) || (function () {
5152
};
5253
})();
5354
exports.__esModule = true;
55+
exports.VisualizationModel = void 0;
5456
var Backbone = require("./aliasUsageInIndexerOfClass_backbone");
5557
var VisualizationModel = /** @class */ (function (_super) {
5658
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsageInObjectLiteral.js

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ var c: { y: { z: IHasVisualizationModel } } = { y: { z: moduleA } };
2424
//// [aliasUsageInObjectLiteral_backbone.js]
2525
"use strict";
2626
exports.__esModule = true;
27+
exports.Model = void 0;
2728
var Model = /** @class */ (function () {
2829
function Model() {
2930
}
@@ -46,6 +47,7 @@ var __extends = (this && this.__extends) || (function () {
4647
};
4748
})();
4849
exports.__esModule = true;
50+
exports.VisualizationModel = void 0;
4951
var Backbone = require("./aliasUsageInObjectLiteral_backbone");
5052
var VisualizationModel = /** @class */ (function (_super) {
5153
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsageInOrExpression.js

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var f: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null ? { x
2727
//// [aliasUsageInOrExpression_backbone.js]
2828
"use strict";
2929
exports.__esModule = true;
30+
exports.Model = void 0;
3031
var Model = /** @class */ (function () {
3132
function Model() {
3233
}
@@ -49,6 +50,7 @@ var __extends = (this && this.__extends) || (function () {
4950
};
5051
})();
5152
exports.__esModule = true;
53+
exports.VisualizationModel = void 0;
5254
var Backbone = require("./aliasUsageInOrExpression_backbone");
5355
var VisualizationModel = /** @class */ (function (_super) {
5456
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class D extends C<IHasVisualizationModel> {
2727
//// [aliasUsageInTypeArgumentOfExtendsClause_backbone.js]
2828
"use strict";
2929
exports.__esModule = true;
30+
exports.Model = void 0;
3031
var Model = /** @class */ (function () {
3132
function Model() {
3233
}
@@ -49,6 +50,7 @@ var __extends = (this && this.__extends) || (function () {
4950
};
5051
})();
5152
exports.__esModule = true;
53+
exports.VisualizationModel = void 0;
5254
var Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone");
5355
var VisualizationModel = /** @class */ (function (_super) {
5456
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsageInVarAssignment.js

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ var m: typeof moduleA = i;
2323
//// [aliasUsageInVarAssignment_backbone.js]
2424
"use strict";
2525
exports.__esModule = true;
26+
exports.Model = void 0;
2627
var Model = /** @class */ (function () {
2728
function Model() {
2829
}
@@ -45,6 +46,7 @@ var __extends = (this && this.__extends) || (function () {
4546
};
4647
})();
4748
exports.__esModule = true;
49+
exports.VisualizationModel = void 0;
4850
var Backbone = require("./aliasUsageInVarAssignment_backbone");
4951
var VisualizationModel = /** @class */ (function (_super) {
5052
__extends(VisualizationModel, _super);

tests/baselines/reference/aliasUsedAsNameValue.js

+2
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ exports.id = void 0;
2525
//// [aliasUsedAsNameValue_1.js]
2626
"use strict";
2727
exports.__esModule = true;
28+
exports.b = void 0;
2829
function b(a) { return null; }
2930
exports.b = b;
3031
//// [aliasUsedAsNameValue_2.js]
3132
"use strict";
3233
exports.__esModule = true;
34+
exports.a = void 0;
3335
///<reference path='aliasUsedAsNameValue_0.ts' />
3436
///<reference path='aliasUsedAsNameValue_1.ts' />
3537
var mod = require("./aliasUsedAsNameValue_0");

tests/baselines/reference/allowImportClausesToMergeWithTypes.js

+2
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,13 @@ const y: originalZZZ = x;
3030
//// [b.js]
3131
"use strict";
3232
exports.__esModule = true;
33+
exports.zzz = void 0;
3334
exports.zzz = 123;
3435
exports["default"] = exports.zzz;
3536
//// [a.js]
3637
"use strict";
3738
exports.__esModule = true;
39+
exports["default"] = void 0;
3840
var b_1 = require("./b");
3941
exports["default"] = b_1["default"];
4042
var x = { x: "" };

tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js

+2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ export var a = vextend({
2222
//// [func.js]
2323
"use strict";
2424
exports.__esModule = true;
25+
exports.vextend = void 0;
2526
exports.vextend = extend;
2627
//// [app.js]
2728
"use strict";
2829
exports.__esModule = true;
30+
exports.a = void 0;
2931
var func_1 = require("./func");
3032
// hover on vextend
3133
exports.a = func_1.vextend({

tests/baselines/reference/allowSyntheticDefaultImports1.js

+1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ export class Foo {
1313
//// [a.js]
1414
"use strict";
1515
exports.__esModule = true;
16+
exports.x = void 0;
1617
var b_1 = require("./b");
1718
exports.x = new b_1["default"].Foo();

tests/baselines/reference/allowSyntheticDefaultImports4.js

+1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ export var x = new Foo();
1414
//// [a.js]
1515
"use strict";
1616
exports.__esModule = true;
17+
exports.x = void 0;
1718
var b_1 = require("./b");
1819
exports.x = new b_1["default"]();

tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ exports.__esModule = true;
2121
//// [file2.js]
2222
"use strict";
2323
exports.__esModule = true;
24+
exports.A = void 0;
2425
var file1_1 = require("./file1");
2526
exports.A = file1_1.styled();
2627

tests/baselines/reference/alwaysStrictModule4.js

+1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ export const a = 1
55
//// [alwaysStrictModule4.js]
66
"use strict";
77
exports.__esModule = true;
8+
exports.a = void 0;
89
// Module commonjs
910
exports.a = 1;

tests/baselines/reference/alwaysStrictModule6.js

+1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ export const a = 1;
55
//// [alwaysStrictModule6.js]
66
"use strict";
77
Object.defineProperty(exports, "__esModule", { value: true });
8+
exports.a = void 0;
89
// Targeting ES5
910
exports.a = 1;

tests/baselines/reference/ambient.js

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ declare namespace ns {
1414
//// [a.js]
1515
"use strict";
1616
exports.__esModule = true;
17+
exports.A = void 0;
1718
var A = /** @class */ (function () {
1819
function A() {
1920
}

tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.js

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ var __extends = (this && this.__extends) || (function () {
3838
define("Configurable", ["require", "exports"], function (require, exports) {
3939
"use strict";
4040
exports.__esModule = true;
41+
exports.Configurable = void 0;
4142
function Configurable(base) {
4243
return /** @class */ (function (_super) {
4344
__extends(class_1, _super);
@@ -56,6 +57,7 @@ define("Configurable", ["require", "exports"], function (require, exports) {
5657
define("Class", ["require", "exports", "Configurable"], function (require, exports, Configurable_1) {
5758
"use strict";
5859
exports.__esModule = true;
60+
exports.ActualClass = exports.HiddenClass = void 0;
5961
var HiddenClass = /** @class */ (function () {
6062
function HiddenClass() {
6163
}

tests/baselines/reference/amdImportAsPrimaryExpression.js

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ if(foo.E1.A === 0){
1616
define(["require", "exports"], function (require, exports) {
1717
"use strict";
1818
exports.__esModule = true;
19+
exports.E1 = void 0;
1920
var E1;
2021
(function (E1) {
2122
E1[E1["A"] = 0] = "A";

tests/baselines/reference/amdImportNotAsPrimaryExpression.js

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var e: number = <foo.E1>0;
3535
define(["require", "exports"], function (require, exports) {
3636
"use strict";
3737
exports.__esModule = true;
38+
exports.E1 = exports.C1 = void 0;
3839
var C1 = /** @class */ (function () {
3940
function C1() {
4041
this.m1 = 42;

tests/baselines/reference/amdModuleBundleNoDuplicateDeclarationEmitComments.js

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export class Bar {}
1111
define("mynamespace::SomeModuleA", ["require", "exports"], function (require, exports) {
1212
"use strict";
1313
exports.__esModule = true;
14+
exports.Foo = void 0;
1415
/// <amd-module name="mynamespace::SomeModuleA" />
1516
var Foo = /** @class */ (function () {
1617
function Foo() {
@@ -22,6 +23,7 @@ define("mynamespace::SomeModuleA", ["require", "exports"], function (require, ex
2223
define("mynamespace::SomeModuleB", ["require", "exports"], function (require, exports) {
2324
"use strict";
2425
exports.__esModule = true;
26+
exports.Bar = void 0;
2527
/// <amd-module name="mynamespace::SomeModuleB" />
2628
var Bar = /** @class */ (function () {
2729
function Bar() {

tests/baselines/reference/amdModuleConstEnumUsage.js

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export class User {
1818
define(["require", "exports"], function (require, exports) {
1919
"use strict";
2020
exports.__esModule = true;
21+
exports.CharCode = void 0;
2122
var CharCode;
2223
(function (CharCode) {
2324
CharCode[CharCode["A"] = 0] = "A";
@@ -28,6 +29,7 @@ define(["require", "exports"], function (require, exports) {
2829
define(["require", "exports"], function (require, exports) {
2930
"use strict";
3031
exports.__esModule = true;
32+
exports.User = void 0;
3133
var User = /** @class */ (function () {
3234
function User() {
3335
}

0 commit comments

Comments
 (0)