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 all commits
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
5 changes: 2 additions & 3 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,7 +1188,7 @@ namespace ts {

variables = append(variables, variable);
}
else if (variable.initializer) {
else {
expressions = append(expressions, transformInitializedVariable(variable));
}
}
Expand Down Expand Up @@ -1259,7 +1258,7 @@ namespace ts {
),
/*location*/ node.name
),
visitNode(node.initializer, moduleExpressionElementVisitor)
node.initializer ? visitNode(node.initializer, moduleExpressionElementVisitor) : createVoidZero()
);
}
}
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 = void 0;
//// [aliasUsedAsNameValue_1.js]
"use strict";
exports.__esModule = true;
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 = void 0;
//// [classMemberInitializerWithLamdaScoping3_1.js]
"use strict";
exports.__esModule = true;
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 = void 0;
});
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 = void 0;


//// [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 = void 0;
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 = void 0;
});


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 = void 0;
});


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 = void 0;
//// [declFileForExportedImport_1.js]
"use strict";
exports.__esModule = true;
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/declFileGenericType.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ var C;
}());
C.D = D;
})(C = exports.C || (exports.C = {}));
exports.a = void 0;
exports.b = C.F;
exports.c = C.F2;
exports.d = C.F3;
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 = void 0;
//// [decoratorOnImportEquals2_1.js]
"use strict";
exports.__esModule = true;
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 = void 0;
exports.foo = exports.exportedFoo;
let nonexportedFoo;
exports.nonexportedFoo = nonexportedFoo;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ import("./a");

//// [a.js]
"use strict";
exports.x = void 0;
Promise.resolve().then(function () { return require("./a"); });
module.exports = exports.x;
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ var c = { a: { x: 'hello', y: 2 } }; // error - y does not exist in type A
var d = { a: { x: 'hello' }, c: 5 }; // ok
var e = { a: { x: 2 }, c: 5 }; // error - types of property x are incompatible
var f = { a: { x: 'hello', y: 2 }, c: 5 }; // error - y does not exist in type A
exports.obj = void 0;
exports.photo = {
id: 1,
url: '',
Expand Down
6 changes: 6 additions & 0 deletions tests/baselines/reference/exportNonInitializedVariablesAMD.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,17 @@ define(["require", "exports"], function (require, exports) {
var ;
let;
var ;
exports.a = void 0;
exports.b = void 0;
exports.c = void 0;
exports.d = void 0;
var A = /** @class */ (function () {
function A() {
}
return A;
}());
exports.e = void 0;
exports.f = void 0;
var B;
(function (B) {
B.a = 1, B.c = 2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,17 @@ exports.__esModule = true;
var ;
let;
var ;
exports.a = void 0;
exports.b = void 0;
exports.c = void 0;
exports.d = void 0;
var A = /** @class */ (function () {
function A() {
}
return A;
}());
exports.e = void 0;
exports.f = void 0;
var B;
(function (B) {
B.a = 1, B.c = 2;
Expand Down
6 changes: 6 additions & 0 deletions tests/baselines/reference/exportNonInitializedVariablesUMD.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,17 @@ export let h1: D = new D;
var ;
let;
var ;
exports.a = void 0;
exports.b = void 0;
exports.c = void 0;
exports.d = void 0;
var A = /** @class */ (function () {
function A() {
}
return A;
}());
exports.e = void 0;
exports.f = void 0;
var B;
(function (B) {
B.a = 1, B.c = 2;
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/exportStarForValues5.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ define(["require", "exports"], function (require, exports) {
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
exports.x = void 0;
});
1 change: 1 addition & 0 deletions tests/baselines/reference/giant.js
Original file line number Diff line number Diff line change
Expand Up @@ -901,6 +901,7 @@ define(["require", "exports"], function (require, exports) {
})(eM = M_1.eM || (M_1.eM = {}));
;
})(M || (M = {}));
exports.eV = void 0;
function eF() { }
exports.eF = eF;
;
Expand Down
3 changes: 3 additions & 0 deletions tests/baselines/reference/importDecl.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ var d = /** @class */ (function () {
return d;
}());
exports.d = d;
exports.x = void 0;
function foo() { return null; }
exports.foo = foo;
//// [importDecl_require1.js]
Expand All @@ -113,6 +114,7 @@ var d = /** @class */ (function () {
return d;
}());
exports.d = d;
exports.x = void 0;
function foo() { return null; }
exports.foo = foo;
//// [importDecl_require3.js]
Expand All @@ -124,6 +126,7 @@ var d = /** @class */ (function () {
return d;
}());
exports.d = d;
exports.x = void 0;
function foo() { return null; }
exports.foo = foo;
//// [importDecl_require4.js]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ exports.B = B;
//// [importDeclarationUsedAsTypeQuery_1.js]
"use strict";
exports.__esModule = true;
exports.x = void 0;


//// [importDeclarationUsedAsTypeQuery_require.d.ts]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export var x: b;
//// [internalAliasInterfaceInsideTopLevelModuleWithExport.js]
"use strict";
exports.__esModule = true;
exports.x = void 0;


//// [internalAliasInterfaceInsideTopLevelModuleWithExport.d.ts]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export var x: b;
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
exports.x = void 0;
});


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ define(["require", "exports"], function (require, exports) {
(function (c) {
c.x.foo();
})(c = exports.c || (exports.c = {}));
exports.z = void 0;
});
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ x.foo();
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
exports.x = void 0;
exports.x.foo();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ x.foo();
//// [internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.js]
"use strict";
exports.__esModule = true;
exports.x = void 0;
exports.x.foo();


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ export var x;
//// [file1.js]
"use strict";
exports.__esModule = true;
exports.x = void 0;
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ export var x;
//// [file1.js]
"use strict";
exports.__esModule = true;
exports.x = void 0;
1 change: 1 addition & 0 deletions tests/baselines/reference/moduleAliasAsFunctionArgument.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ fn(a); // Error: property 'x' is missing from 'a'
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
exports.x = void 0;
});
//// [moduleAliasAsFunctionArgument_1.js]
define(["require", "exports", "moduleAliasAsFunctionArgument_0"], function (require, exports, a) {
Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/nodeResolution4.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ var x = 1;
//// [a.js]
"use strict";
exports.__esModule = true;
/// <reference path="ref.ts"/>
exports.y = void 0;
//// [b.js]
"use strict";
exports.__esModule = true;
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export let y: number;
define(["require", "exports"], function (require, exports) {
"use strict";
exports.__esModule = true;
exports.b = void 0;
});
//// [file2.js]
define(["require", "exports", "module1", "templates/module2", "../file3"], function (require, exports, module1_1, module2_1, file3_1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export let y: number;
//// [module2.js]
"use strict";
exports.__esModule = true;
exports.b = void 0;
//// [file2.js]
"use strict";
exports.__esModule = true;
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/privacyCheckTypeOfFunction.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export var b = foo;
exports.__esModule = true;
function foo() {
}
exports.x = void 0;
exports.b = foo;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,11 @@ define(["require", "exports"], function (require, exports) {
var privateUse_im_public_v_private = exports.im_public_v_private;
exports.publicUse_im_public_v_private = exports.im_public_v_private;
var privateUse_im_public_i_private;
exports.publicUse_im_public_i_private = void 0;
var privateUse_im_public_mi_private = new exports.im_public_mi_private.c();
exports.publicUse_im_public_mi_private = new exports.im_public_mi_private.c();
var privateUse_im_public_mu_private;
exports.publicUse_im_public_mu_private = void 0;
// No Privacy errors - importing public elements
exports.im_public_c_public = m_public.c_public;
exports.im_public_e_public = m_public.e_public;
Expand All @@ -196,9 +198,11 @@ define(["require", "exports"], function (require, exports) {
var privateUse_im_public_v_public = exports.im_public_v_public;
exports.publicUse_im_public_v_public = exports.im_public_v_public;
var privateUse_im_public_i_public;
exports.publicUse_im_public_i_public = void 0;
var privateUse_im_public_mi_public = new exports.im_public_mi_public.c();
exports.publicUse_im_public_mi_public = new exports.im_public_mi_public.c();
var privateUse_im_public_mu_public;
exports.publicUse_im_public_mu_public = void 0;
});


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,11 @@ define(["require", "exports"], function (require, exports) {
var privateUse_im_private_v_private = im_private_v_private;
exports.publicUse_im_private_v_private = im_private_v_private;
var privateUse_im_private_i_private;
exports.publicUse_im_private_i_private = void 0;
var privateUse_im_private_mi_private = new im_private_mi_private.c();
exports.publicUse_im_private_mi_private = new im_private_mi_private.c();
var privateUse_im_private_mu_private;
exports.publicUse_im_private_mu_private = void 0;
// No Privacy errors - importing public elements
var im_private_c_public = m_public.c_public;
var im_private_e_public = m_public.e_public;
Expand All @@ -196,9 +198,11 @@ define(["require", "exports"], function (require, exports) {
var privateUse_im_private_v_public = im_private_v_public;
exports.publicUse_im_private_v_public = im_private_v_public;
var privateUse_im_private_i_public;
exports.publicUse_im_private_i_public = void 0;
var privateUse_im_private_mi_public = new im_private_mi_public.c();
exports.publicUse_im_private_mi_public = new im_private_mi_public.c();
var privateUse_im_private_mu_public;
exports.publicUse_im_private_mu_public = void 0;
});


Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/privacyVar.js
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,9 @@ var glo_C4_public = /** @class */ (function () {
return glo_C4_public;
}());
var glo_v1_private;
exports.glo_v2_public = void 0;
var glo_v3_private;
exports.glo_v4_public = void 0; // error
var glo_v11_private = new glo_C1_public();
exports.glo_v12_public = new glo_C1_public();
var glo_v13_private = new glo_C2_private();
Expand Down
3 changes: 3 additions & 0 deletions tests/baselines/reference/privacyVarDeclFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,8 @@ var privateClassWithWithPublicPropertyTypes = /** @class */ (function () {
}
return privateClassWithWithPublicPropertyTypes;
}());
exports.publicVarWithPrivatePropertyTypes = void 0; // Error
exports.publicVarWithPublicPropertyTypes = void 0;
var privateVarWithPrivatePropertyTypes;
var privateVarWithPublicPropertyTypes;
var publicClassWithPrivateModulePropertyTypes = /** @class */ (function () {
Expand All @@ -468,6 +470,7 @@ var publicClassWithPrivateModulePropertyTypes = /** @class */ (function () {
return publicClassWithPrivateModulePropertyTypes;
}());
exports.publicClassWithPrivateModulePropertyTypes = publicClassWithPrivateModulePropertyTypes;
exports.publicVarWithPrivateModulePropertyTypes = void 0; // Error
var privateClassWithPrivateModulePropertyTypes = /** @class */ (function () {
function privateClassWithPrivateModulePropertyTypes() {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ define(["require", "exports"], function (require, exports) {
}());
exports.d = d;
;
exports.x = void 0;
function foo() {
return new d();
}
Expand Down
Loading