Skip to content

Commit 92aeea3

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

File tree

231 files changed

+4181
-2883
lines changed

Some content is hidden

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

231 files changed

+4181
-2883
lines changed

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";

tests/baselines/reference/collisionExportsRequireAndInternalModuleAlias.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ define(["require", "exports"], function (require, exports) {
2727
"use strict";
2828
exports.__esModule = true;
2929
var m;
30+
exports.m = undefined;
3031
(function (m) {
3132
var c = /** @class */ (function () {
3233
function c() {

tests/baselines/reference/collisionExportsRequireAndModule.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ define(["require", "exports"], function (require, exports) {
9696
"use strict";
9797
exports.__esModule = true;
9898
var require;
99+
exports.require = undefined;
99100
(function (require) {
100101
var C = /** @class */ (function () {
101102
function C() {
@@ -109,6 +110,7 @@ define(["require", "exports"], function (require, exports) {
109110
}
110111
exports.foo = foo;
111112
var exports;
113+
exports.exports = undefined;
112114
(function (exports) {
113115
var C = /** @class */ (function () {
114116
function C() {

tests/baselines/reference/commentOnExportEnumDeclaration.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ exports.__esModule = true;
1313
* comment
1414
*/
1515
var Color;
16+
/**
17+
* comment
18+
*/
19+
exports.Color = undefined;
1620
(function (Color) {
1721
Color[Color["r"] = 0] = "r";
1822
Color[Color["g"] = 1] = "g";

tests/baselines/reference/commentsBeforeVariableStatement1.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ export var b: number;
77
define(["require", "exports"], function (require, exports) {
88
"use strict";
99
exports.__esModule = true;
10+
/** b's comment*/
11+
exports.b = undefined;
1012
});

tests/baselines/reference/commentsDottedModuleName.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ define(["require", "exports"], function (require, exports) {
1212
Object.defineProperty(exports, "__esModule", { value: true });
1313
/** this is multi declare module*/
1414
var outerModule;
15+
/** this is multi declare module*/
16+
exports.outerModule = undefined;
1517
(function (outerModule) {
1618
var InnerModule;
1719
(function (InnerModule) {

tests/baselines/reference/commentsExternalModules.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ define(["require", "exports"], function (require, exports) {
6666
Object.defineProperty(exports, "__esModule", { value: true });
6767
/** Module comment*/
6868
var m1;
69+
/** Module comment*/
70+
exports.m1 = undefined;
6971
(function (m1) {
7072
/** foo's comment*/
7173
function foo() {
@@ -95,6 +97,8 @@ define(["require", "exports"], function (require, exports) {
9597
var myvar = new m1.m2.c();
9698
/** Module comment */
9799
var m4;
100+
/** Module comment */
101+
exports.m4 = undefined;
98102
(function (m4) {
99103
/** foo's comment
100104
*/

tests/baselines/reference/commentsExternalModules2.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ define(["require", "exports"], function (require, exports) {
6666
Object.defineProperty(exports, "__esModule", { value: true });
6767
/** Module comment*/
6868
var m1;
69+
/** Module comment*/
70+
exports.m1 = undefined;
6971
(function (m1) {
7072
/** foo's comment*/
7173
function foo() {
@@ -95,6 +97,8 @@ define(["require", "exports"], function (require, exports) {
9597
var myvar = new m1.m2.c();
9698
/** Module comment */
9799
var m4;
100+
/** Module comment */
101+
exports.m4 = undefined;
98102
(function (m4) {
99103
/** foo's comment
100104
*/

tests/baselines/reference/commentsExternalModules3.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ export var newVar2 = new extMod.m4.m2.c();
6565
Object.defineProperty(exports, "__esModule", { value: true });
6666
/** Module comment*/
6767
var m1;
68+
/** Module comment*/
69+
exports.m1 = undefined;
6870
(function (m1) {
6971
/** foo's comment*/
7072
function foo() {
@@ -94,6 +96,8 @@ m1.fooExport();
9496
var myvar = new m1.m2.c();
9597
/** Module comment */
9698
var m4;
99+
/** Module comment */
100+
exports.m4 = undefined;
97101
(function (m4) {
98102
/** foo's comment
99103
*/

tests/baselines/reference/commentsMultiModuleMultiFile.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ define(["require", "exports"], function (require, exports) {
4141
Object.defineProperty(exports, "__esModule", { value: true });
4242
/** this is multi declare module*/
4343
var multiM;
44+
/** this is multi declare module*/
45+
exports.multiM = undefined;
4446
(function (multiM) {
4547
/// class b comment
4648
var b = /** @class */ (function () {
@@ -76,6 +78,8 @@ define(["require", "exports"], function (require, exports) {
7678
Object.defineProperty(exports, "__esModule", { value: true });
7779
/** this is multi module 3 comment*/
7880
var multiM;
81+
/** this is multi module 3 comment*/
82+
exports.multiM = undefined;
7983
(function (multiM) {
8084
/** class d comment*/
8185
var d = /** @class */ (function () {

tests/baselines/reference/commonJSImportNotAsPrimaryExpression.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ var C1 = /** @class */ (function () {
4343
}());
4444
exports.C1 = C1;
4545
var E1;
46+
exports.E1 = undefined;
4647
(function (E1) {
4748
E1[E1["A"] = 0] = "A";
4849
E1[E1["B"] = 1] = "B";

tests/baselines/reference/constEnumPreserveEmitReexport.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export { MyConstEnum as default } from './ConstEnum';
1515
"use strict";
1616
exports.__esModule = true;
1717
var MyConstEnum;
18+
exports.MyConstEnum = undefined;
1819
(function (MyConstEnum) {
1920
MyConstEnum[MyConstEnum["Foo"] = 0] = "Foo";
2021
MyConstEnum[MyConstEnum["Bar"] = 1] = "Bar";

tests/baselines/reference/controlFlowManyConsecutiveConditionsNoTimeout.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ while (true) {
136136
"use strict";
137137
exports.__esModule = true;
138138
var Choice;
139+
exports.Choice = undefined;
139140
(function (Choice) {
140141
Choice[Choice["One"] = 0] = "One";
141142
Choice[Choice["Two"] = 1] = "Two";

tests/baselines/reference/declFileAmbientExternalModuleWithSingleExportedModule.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export var x: SubModule.m.m3.c;
2121
//// [declFileAmbientExternalModuleWithSingleExportedModule_1.js]
2222
"use strict";
2323
exports.__esModule = true;
24+
exports.x = undefined;
2425

2526

2627
//// [declFileAmbientExternalModuleWithSingleExportedModule_0.d.ts]

tests/baselines/reference/declFileExportAssignmentOfGenericInterface.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ define(["require", "exports"], function (require, exports) {
2020
define(["require", "exports"], function (require, exports) {
2121
"use strict";
2222
exports.__esModule = true;
23+
exports.x = undefined;
2324
exports.x.a;
2425
});
2526

tests/baselines/reference/declFileExportImportChain.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ define(["require", "exports", "declFileExportImportChain_b1"], function (require
6161
define(["require", "exports"], function (require, exports) {
6262
"use strict";
6363
exports.__esModule = true;
64+
exports.x = undefined;
6465
});
6566

6667

tests/baselines/reference/declFileExportImportChain2.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ define(["require", "exports", "declFileExportImportChain2_b"], function (require
5252
define(["require", "exports"], function (require, exports) {
5353
"use strict";
5454
exports.__esModule = true;
55+
exports.x = undefined;
5556
});
5657

5758

tests/baselines/reference/declFileForExportedImport.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var z = b.x;
1414
//// [declFileForExportedImport_0.js]
1515
"use strict";
1616
exports.__esModule = true;
17+
exports.x = undefined;
1718
//// [declFileForExportedImport_1.js]
1819
"use strict";
1920
exports.__esModule = true;

tests/baselines/reference/declFileGenericType.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ var __extends = (this && this.__extends) || (function () {
5656
})();
5757
exports.__esModule = true;
5858
var C;
59+
exports.C = undefined;
5960
(function (C) {
6061
var A = /** @class */ (function () {
6162
function A() {
@@ -89,6 +90,7 @@ var C;
8990
}());
9091
C.D = D;
9192
})(C = exports.C || (exports.C = {}));
93+
exports.a = undefined;
9294
exports.b = C.F;
9395
exports.c = C.F2;
9496
exports.d = C.F3;

tests/baselines/reference/declarationEmitNameConflicts.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ module.exports = f;
6666
exports.__esModule = true;
6767
var im = require("./declarationEmit_nameConflicts_1");
6868
var M;
69+
exports.M = undefined;
6970
(function (M) {
7071
function f() { }
7172
M.f = f;

tests/baselines/reference/declarationEmitNameConflictsWithAlias.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export module M {
1010
"use strict";
1111
exports.__esModule = true;
1212
var M;
13+
exports.M = undefined;
1314
(function (M) {
1415
})(M = exports.M || (exports.M = {}));
1516

tests/baselines/reference/declarationEmitNoNonRequiredParens.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export const bar = (null as TestType[Extract<keyof TestType, string>][]);
1111
"use strict";
1212
exports.__esModule = true;
1313
var Test;
14+
exports.Test = undefined;
1415
(function (Test) {
1516
Test[Test["A"] = 0] = "A";
1617
Test[Test["B"] = 1] = "B";

tests/baselines/reference/decoratorOnImportEquals2.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ declare function dec<T>(target: T): T;
1212
//// [decoratorOnImportEquals2_0.js]
1313
"use strict";
1414
exports.__esModule = true;
15+
exports.X = undefined;
1516
//// [decoratorOnImportEquals2_1.js]
1617
"use strict";
1718
exports.__esModule = true;

tests/baselines/reference/defaultDeclarationEmitShadowedNamedCorrectly.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ var MyComponent = /** @class */ (function () {
3434
}());
3535
exports["default"] = MyComponent;
3636
var Something;
37+
exports.Something = undefined;
3738
(function (Something) {
3839
var MyComponent = 2; // Shadow declaration, so symbol is only usable via the self-import
3940
Something.create = make(me["default"]);

tests/baselines/reference/destructuringAssignmentWithExportedName.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export { exportedFoo as foo, nonexportedFoo as nfoo };
2929
"use strict";
3030
var _a, _b, _c, _d, _e;
3131
Object.defineProperty(exports, "__esModule", { value: true });
32+
exports.exportedFoo = undefined;
3233
exports.foo = exports.exportedFoo;
3334
let nonexportedFoo;
3435
exports.nonexportedFoo = nonexportedFoo;

tests/baselines/reference/downlevelLetConst13.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ exports.bar2 = [2][0];
2929
exports.bar3 = { a: 1 }.a;
3030
exports.bar4 = { a: 1 }.a;
3131
var M;
32+
exports.M = undefined;
3233
(function (M) {
3334
M.baz = 100;
3435
M.baz2 = true;

tests/baselines/reference/enumDeclarationEmitInitializerHasImport.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const value = provider.Enum.Value1;
1414
"use strict";
1515
exports.__esModule = true;
1616
var Enum;
17+
exports.Enum = undefined;
1718
(function (Enum) {
1819
Enum[Enum["Value1"] = 0] = "Value1";
1920
Enum[Enum["Value2"] = 1] = "Value2";

tests/baselines/reference/enumFromExternalModule.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var x = f.Mode.Open;
1414
"use strict";
1515
exports.__esModule = true;
1616
var Mode;
17+
exports.Mode = undefined;
1718
(function (Mode) {
1819
Mode[Mode["Open"] = 0] = "Open";
1920
})(Mode = exports.Mode || (exports.Mode = {}));

0 commit comments

Comments
 (0)