Skip to content

Retain undefined initializations #36806

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions src/compiler/transformers/module/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1180,7 +1180,6 @@ namespace ts {
let modifiers: NodeArray<Modifier> | undefined;

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

variables = append(variables, variable);
}
else if (variable.initializer) {
expressions = append(expressions, transformInitializedVariable(variable));
}
expressions = append(expressions, transformInitializedVariable(variable));
}

if (variables) {
Expand Down Expand Up @@ -1259,7 +1256,7 @@ namespace ts {
),
/*location*/ node.name
),
visitNode(node.initializer, moduleExpressionElementVisitor)
node.initializer ? visitNode(node.initializer, moduleExpressionElementVisitor) : createIdentifier("undefined")
);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export module A {
"use strict";
exports.__esModule = true;
var A;
exports.A = undefined;
(function (A) {
var Utils;
(function (Utils) {
Expand All @@ -47,6 +48,7 @@ var A;
"use strict";
exports.__esModule = true;
var A;
exports.A = undefined;
(function (A) {
// collision with 'Origin' var in other part of merged module
A.Origin = { x: 0, y: 0 };
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/aliasUsedAsNameValue.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export var a = function () {
//// [aliasUsedAsNameValue_0.js]
"use strict";
exports.__esModule = true;
exports.id = undefined;
//// [aliasUsedAsNameValue_1.js]
"use strict";
exports.__esModule = true;
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/amdImportAsPrimaryExpression.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
var E1;
exports.E1 = undefined;
(function (E1) {
E1[E1["A"] = 0] = "A";
E1[E1["B"] = 1] = "B";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ define(["require", "exports"], function (require, exports) {
}());
exports.C1 = C1;
var E1;
exports.E1 = undefined;
(function (E1) {
E1[E1["A"] = 0] = "A";
E1[E1["B"] = 1] = "B";
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/amdModuleConstEnumUsage.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
var CharCode;
exports.CharCode = undefined;
(function (CharCode) {
CharCode[CharCode["A"] = 0] = "A";
CharCode[CharCode["B"] = 1] = "B";
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/chainedImportAlias.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ y.m.foo();
"use strict";
exports.__esModule = true;
var m;
exports.m = undefined;
(function (m) {
function foo() { }
m.foo = foo;
Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/circularReference.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export module M1 {
exports.__esModule = true;
var foo2 = require("./foo2");
var M1;
exports.M1 = undefined;
(function (M1) {
var C1 = /** @class */ (function () {
function C1() {
Expand All @@ -54,6 +55,7 @@ var M1;
exports.__esModule = true;
var foo1 = require("./foo1");
var M1;
exports.M1 = undefined;
(function (M1) {
var C1 = /** @class */ (function () {
function C1() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export class Test1 {
//// [classMemberInitializerWithLamdaScoping3_0.js]
"use strict";
exports.__esModule = true;
exports.field1 = undefined;
//// [classMemberInitializerWithLamdaScoping3_1.js]
"use strict";
exports.__esModule = true;
Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/collisionExportsRequireAndEnum.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,13 @@ define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
var require;
exports.require = undefined;
(function (require) {
require[require["_thisVal1"] = 0] = "_thisVal1";
require[require["_thisVal2"] = 1] = "_thisVal2";
})(require = exports.require || (exports.require = {}));
var exports;
exports.exports = undefined;
(function (exports) {
exports[exports["_thisVal1"] = 0] = "_thisVal1";
exports[exports["_thisVal2"] = 1] = "_thisVal2";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
var m;
exports.m = undefined;
(function (m) {
var c = /** @class */ (function () {
function c() {
Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/collisionExportsRequireAndModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
var require;
exports.require = undefined;
(function (require) {
var C = /** @class */ (function () {
function C() {
Expand All @@ -109,6 +110,7 @@ define(["require", "exports"], function (require, exports) {
}
exports.foo = foo;
var exports;
exports.exports = undefined;
(function (exports) {
var C = /** @class */ (function () {
function C() {
Expand Down
4 changes: 4 additions & 0 deletions tests/baselines/reference/commentOnExportEnumDeclaration.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ exports.__esModule = true;
* comment
*/
var Color;
/**
* comment
*/
exports.Color = undefined;
(function (Color) {
Color[Color["r"] = 0] = "r";
Color[Color["g"] = 1] = "g";
Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/commentsBeforeVariableStatement1.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ export var b: number;
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
/** b's comment*/
exports.b = undefined;
});
2 changes: 2 additions & 0 deletions tests/baselines/reference/commentsDottedModuleName.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ define(["require", "exports"], function (require, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
/** this is multi declare module*/
var outerModule;
/** this is multi declare module*/
exports.outerModule = undefined;
(function (outerModule) {
var InnerModule;
(function (InnerModule) {
Expand Down
4 changes: 4 additions & 0 deletions tests/baselines/reference/commentsExternalModules.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ define(["require", "exports"], function (require, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
/** Module comment*/
var m1;
/** Module comment*/
exports.m1 = undefined;
(function (m1) {
/** foo's comment*/
function foo() {
Expand Down Expand Up @@ -95,6 +97,8 @@ define(["require", "exports"], function (require, exports) {
var myvar = new m1.m2.c();
/** Module comment */
var m4;
/** Module comment */
exports.m4 = undefined;
(function (m4) {
/** foo's comment
*/
Expand Down
4 changes: 4 additions & 0 deletions tests/baselines/reference/commentsExternalModules2.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ define(["require", "exports"], function (require, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
/** Module comment*/
var m1;
/** Module comment*/
exports.m1 = undefined;
(function (m1) {
/** foo's comment*/
function foo() {
Expand Down Expand Up @@ -95,6 +97,8 @@ define(["require", "exports"], function (require, exports) {
var myvar = new m1.m2.c();
/** Module comment */
var m4;
/** Module comment */
exports.m4 = undefined;
(function (m4) {
/** foo's comment
*/
Expand Down
4 changes: 4 additions & 0 deletions tests/baselines/reference/commentsExternalModules3.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ export var newVar2 = new extMod.m4.m2.c();
Object.defineProperty(exports, "__esModule", { value: true });
/** Module comment*/
var m1;
/** Module comment*/
exports.m1 = undefined;
(function (m1) {
/** foo's comment*/
function foo() {
Expand Down Expand Up @@ -94,6 +96,8 @@ m1.fooExport();
var myvar = new m1.m2.c();
/** Module comment */
var m4;
/** Module comment */
exports.m4 = undefined;
(function (m4) {
/** foo's comment
*/
Expand Down
4 changes: 4 additions & 0 deletions tests/baselines/reference/commentsMultiModuleMultiFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ define(["require", "exports"], function (require, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
/** this is multi declare module*/
var multiM;
/** this is multi declare module*/
exports.multiM = undefined;
(function (multiM) {
/// class b comment
var b = /** @class */ (function () {
Expand Down Expand Up @@ -76,6 +78,8 @@ define(["require", "exports"], function (require, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
/** this is multi module 3 comment*/
var multiM;
/** this is multi module 3 comment*/
exports.multiM = undefined;
(function (multiM) {
/** class d comment*/
var d = /** @class */ (function () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ var C1 = /** @class */ (function () {
}());
exports.C1 = C1;
var E1;
exports.E1 = undefined;
(function (E1) {
E1[E1["A"] = 0] = "A";
E1[E1["B"] = 1] = "B";
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/constEnumPreserveEmitReexport.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export { MyConstEnum as default } from './ConstEnum';
"use strict";
exports.__esModule = true;
var MyConstEnum;
exports.MyConstEnum = undefined;
(function (MyConstEnum) {
MyConstEnum[MyConstEnum["Foo"] = 0] = "Foo";
MyConstEnum[MyConstEnum["Bar"] = 1] = "Bar";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ while (true) {
"use strict";
exports.__esModule = true;
var Choice;
exports.Choice = undefined;
(function (Choice) {
Choice[Choice["One"] = 0] = "One";
Choice[Choice["Two"] = 1] = "Two";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export var x: SubModule.m.m3.c;
//// [declFileAmbientExternalModuleWithSingleExportedModule_1.js]
"use strict";
exports.__esModule = true;
exports.x = undefined;


//// [declFileAmbientExternalModuleWithSingleExportedModule_0.d.ts]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ define(["require", "exports"], function (require, exports) {
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
exports.x = undefined;
exports.x.a;
});

Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/declFileExportImportChain.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ define(["require", "exports", "declFileExportImportChain_b1"], function (require
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
exports.x = undefined;
});


Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/declFileExportImportChain2.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ define(["require", "exports", "declFileExportImportChain2_b"], function (require
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
exports.x = undefined;
});


Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/declFileForExportedImport.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var z = b.x;
//// [declFileForExportedImport_0.js]
"use strict";
exports.__esModule = true;
exports.x = undefined;
//// [declFileForExportedImport_1.js]
"use strict";
exports.__esModule = true;
Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/declFileGenericType.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ var __extends = (this && this.__extends) || (function () {
})();
exports.__esModule = true;
var C;
exports.C = undefined;
(function (C) {
var A = /** @class */ (function () {
function A() {
Expand Down Expand Up @@ -89,6 +90,7 @@ var C;
}());
C.D = D;
})(C = exports.C || (exports.C = {}));
exports.a = undefined;
exports.b = C.F;
exports.c = C.F2;
exports.d = C.F3;
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/declarationEmitNameConflicts.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ module.exports = f;
exports.__esModule = true;
var im = require("./declarationEmit_nameConflicts_1");
var M;
exports.M = undefined;
(function (M) {
function f() { }
M.f = f;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export module M {
"use strict";
exports.__esModule = true;
var M;
exports.M = undefined;
(function (M) {
})(M = exports.M || (exports.M = {}));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export const bar = (null as TestType[Extract<keyof TestType, string>][]);
"use strict";
exports.__esModule = true;
var Test;
exports.Test = undefined;
(function (Test) {
Test[Test["A"] = 0] = "A";
Test[Test["B"] = 1] = "B";
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/decoratorOnImportEquals2.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ declare function dec<T>(target: T): T;
//// [decoratorOnImportEquals2_0.js]
"use strict";
exports.__esModule = true;
exports.X = undefined;
//// [decoratorOnImportEquals2_1.js]
"use strict";
exports.__esModule = true;
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ var MyComponent = /** @class */ (function () {
}());
exports["default"] = MyComponent;
var Something;
exports.Something = undefined;
(function (Something) {
var MyComponent = 2; // Shadow declaration, so symbol is only usable via the self-import
Something.create = make(me["default"]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export { exportedFoo as foo, nonexportedFoo as nfoo };
"use strict";
var _a, _b, _c, _d, _e;
Object.defineProperty(exports, "__esModule", { value: true });
exports.exportedFoo = undefined;
exports.foo = exports.exportedFoo;
let nonexportedFoo;
exports.nonexportedFoo = nonexportedFoo;
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/downlevelLetConst13.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ exports.bar2 = [2][0];
exports.bar3 = { a: 1 }.a;
exports.bar4 = { a: 1 }.a;
var M;
exports.M = undefined;
(function (M) {
M.baz = 100;
M.baz2 = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export const value = provider.Enum.Value1;
"use strict";
exports.__esModule = true;
var Enum;
exports.Enum = undefined;
(function (Enum) {
Enum[Enum["Value1"] = 0] = "Value1";
Enum[Enum["Value2"] = 1] = "Value2";
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/enumFromExternalModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var x = f.Mode.Open;
"use strict";
exports.__esModule = true;
var Mode;
exports.Mode = undefined;
(function (Mode) {
Mode[Mode["Open"] = 0] = "Open";
})(Mode = exports.Mode || (exports.Mode = {}));
Expand Down
Loading