Skip to content

Commit 92aeea3

Browse files
committed
Emit an export assignment even when the initializer is elided
1 parent da8b58a commit 92aeea3

231 files changed

Lines changed: 4181 additions & 2883 deletions

File tree

Some content is hidden

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

src/compiler/transformers/module/module.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1180,7 +1180,6 @@ namespace ts {
11801180
let modifiers: NodeArray<Modifier> | undefined;
11811181

11821182
// If we're exporting these variables, then these just become assignments to 'exports.x'.
1183-
// We only want to emit assignments for variables with initializers.
11841183
for (const variable of node.declarationList.declarations) {
11851184
if (isIdentifier(variable.name) && isLocalName(variable.name)) {
11861185
if (!modifiers) {
@@ -1189,9 +1188,7 @@ namespace ts {
11891188

11901189
variables = append(variables, variable);
11911190
}
1192-
else if (variable.initializer) {
1193-
expressions = append(expressions, transformInitializedVariable(variable));
1194-
}
1191+
expressions = append(expressions, transformInitializedVariable(variable));
11951192
}
11961193

11971194
if (variables) {
@@ -1259,7 +1256,7 @@ namespace ts {
12591256
),
12601257
/*location*/ node.name
12611258
),
1262-
visitNode(node.initializer, moduleExpressionElementVisitor)
1259+
node.initializer ? visitNode(node.initializer, moduleExpressionElementVisitor) : createIdentifier("undefined")
12631260
);
12641261
}
12651262
}

tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedLocalVarsOfTheSameName.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export module A {
3333
"use strict";
3434
exports.__esModule = true;
3535
var A;
36+
exports.A = undefined;
3637
(function (A) {
3738
var Utils;
3839
(function (Utils) {
@@ -47,6 +48,7 @@ var A;
4748
"use strict";
4849
exports.__esModule = true;
4950
var A;
51+
exports.A = undefined;
5052
(function (A) {
5153
// collision with 'Origin' var in other part of merged module
5254
A.Origin = { x: 0, y: 0 };

tests/baselines/reference/aliasUsedAsNameValue.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export var a = function () {
2121
//// [aliasUsedAsNameValue_0.js]
2222
"use strict";
2323
exports.__esModule = true;
24+
exports.id = undefined;
2425
//// [aliasUsedAsNameValue_1.js]
2526
"use strict";
2627
exports.__esModule = true;

tests/baselines/reference/amdImportAsPrimaryExpression.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ define(["require", "exports"], function (require, exports) {
1717
"use strict";
1818
exports.__esModule = true;
1919
var E1;
20+
exports.E1 = undefined;
2021
(function (E1) {
2122
E1[E1["A"] = 0] = "A";
2223
E1[E1["B"] = 1] = "B";

tests/baselines/reference/amdImportNotAsPrimaryExpression.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ define(["require", "exports"], function (require, exports) {
4444
}());
4545
exports.C1 = C1;
4646
var E1;
47+
exports.E1 = undefined;
4748
(function (E1) {
4849
E1[E1["A"] = 0] = "A";
4950
E1[E1["B"] = 1] = "B";

tests/baselines/reference/amdModuleConstEnumUsage.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ define(["require", "exports"], function (require, exports) {
1919
"use strict";
2020
exports.__esModule = true;
2121
var CharCode;
22+
exports.CharCode = undefined;
2223
(function (CharCode) {
2324
CharCode[CharCode["A"] = 0] = "A";
2425
CharCode[CharCode["B"] = 1] = "B";

tests/baselines/reference/chainedImportAlias.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ y.m.foo();
1515
"use strict";
1616
exports.__esModule = true;
1717
var m;
18+
exports.m = undefined;
1819
(function (m) {
1920
function foo() { }
2021
m.foo = foo;

tests/baselines/reference/circularReference.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export module M1 {
3838
exports.__esModule = true;
3939
var foo2 = require("./foo2");
4040
var M1;
41+
exports.M1 = undefined;
4142
(function (M1) {
4243
var C1 = /** @class */ (function () {
4344
function C1() {
@@ -54,6 +55,7 @@ var M1;
5455
exports.__esModule = true;
5556
var foo1 = require("./foo1");
5657
var M1;
58+
exports.M1 = undefined;
5759
(function (M1) {
5860
var C1 = /** @class */ (function () {
5961
function C1() {

tests/baselines/reference/classMemberInitializerWithLamdaScoping4.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export class Test1 {
1818
//// [classMemberInitializerWithLamdaScoping3_0.js]
1919
"use strict";
2020
exports.__esModule = true;
21+
exports.field1 = undefined;
2122
//// [classMemberInitializerWithLamdaScoping3_1.js]
2223
"use strict";
2324
exports.__esModule = true;

tests/baselines/reference/collisionExportsRequireAndEnum.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,13 @@ define(["require", "exports"], function (require, exports) {
6565
"use strict";
6666
exports.__esModule = true;
6767
var require;
68+
exports.require = undefined;
6869
(function (require) {
6970
require[require["_thisVal1"] = 0] = "_thisVal1";
7071
require[require["_thisVal2"] = 1] = "_thisVal2";
7172
})(require = exports.require || (exports.require = {}));
7273
var exports;
74+
exports.exports = undefined;
7375
(function (exports) {
7476
exports[exports["_thisVal1"] = 0] = "_thisVal1";
7577
exports[exports["_thisVal2"] = 1] = "_thisVal2";

0 commit comments

Comments
 (0)