Skip to content

Commit c6c2c4c

Browse files
authoredFeb 28, 2020
Hoist initial assignment to exported names in cjs to they are not blocked by bindings made by __exportStar (#37093)
* Hoist initial assignment to exported names in cjs to they are not blocked by bindings made by __exportStar * Copy hoisted identifiers so they do not create sourcemaps * Accept updated baselines
1 parent 634d514 commit c6c2c4c

File tree

1,700 files changed

+6787
-4836
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,700 files changed

+6787
-4836
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"), createIdentifier(idText(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"), createIdentifier(idText(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
}

‎src/testRunner/unittests/tsserver/compileOnSave.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -714,7 +714,7 @@ namespace ts.projectSystem {
714714

715715
const expectedEmittedFileName = "/a/b/f1.js";
716716
assert.isTrue(host.fileExists(expectedEmittedFileName));
717-
assert.equal(host.readFile(expectedEmittedFileName), `"use strict";\r\nexports.__esModule = true;\r\nfunction Foo() { return 10; }\r\nexports.Foo = Foo;\r\n`);
717+
assert.equal(host.readFile(expectedEmittedFileName), `"use strict";\r\nexports.__esModule = true;\r\nexports.Foo = void 0;\r\nfunction Foo() { return 10; }\r\nexports.Foo = Foo;\r\n`);
718718
});
719719

720720
it("shoud not emit js files in external projects", () => {

0 commit comments

Comments
 (0)