diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 30205090992..cca3a8d6713 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -5779,6 +5779,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(`function ${exportStarFunction}(m) {`); increaseIndent(); writeLine(); + write(`var exports = {};`); + writeLine(); write(`for(var n in m) {`); increaseIndent(); writeLine(); @@ -5786,10 +5788,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (localNames) { write(`&& !${localNames}.hasOwnProperty(n)`); } - write(`) ${exportFunctionForFile}(n, m[n]);`); + write(`) exports[n] = m[n];`); decreaseIndent(); writeLine(); write("}"); + writeLine(); + write(`${exportFunctionForFile}(exports);`) decreaseIndent(); writeLine(); write("}"); @@ -6122,16 +6126,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if ((importNode).exportClause) { // export {a, b as c} from 'foo' // emit as: - // exports('a', _foo["a"]) - // exports('c', _foo["b"]) + // var reexports = {} + // reexports['a'] = _foo["a"]; + // reexports['c'] = _foo["b"]; + // exports_(reexports); + let reexportsVariableName = makeUniqueName("reexports"); + writeLine(); + write(`var ${reexportsVariableName} = {};`) + writeLine(); for (let e of (importNode).exportClause.elements) { - writeLine(); - write(`${exportFunctionForFile}("`); + write(`${reexportsVariableName}["`); emitNodeWithoutSourceMap(e.name); - write(`", ${parameterName}["`); + write(`"] = ${parameterName}["`); emitNodeWithoutSourceMap(e.propertyName || e.name); - write(`"]);`); + write(`"];`); + writeLine(); } + write(`${exportFunctionForFile}(${reexportsVariableName});`); } else { writeLine(); diff --git a/tests/baselines/reference/systemModule11.js b/tests/baselines/reference/systemModule11.js index 55011214042..34dd0d3df5f 100644 --- a/tests/baselines/reference/systemModule11.js +++ b/tests/baselines/reference/systemModule11.js @@ -51,9 +51,11 @@ System.register(['bar'], function(exports_1) { 'foo': true }; function exportStar_1(m) { + var exports = {}; for(var n in m) { - if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]); + if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n]; } + exports_1(exports); } return { setters:[ @@ -72,9 +74,11 @@ System.register(['bar'], function(exports_1) { 'y1': true }; function exportStar_1(m) { + var exports = {}; for(var n in m) { - if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]); + if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n]; } + exports_1(exports); } return { setters:[ @@ -96,15 +100,19 @@ System.register(['a', 'bar'], function(exports_1) { 'z': true }; function exportStar_1(m) { + var exports = {}; for(var n in m) { - if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]); + if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n]; } + exports_1(exports); } return { setters:[ function (_a_1) { - exports_1("x", _a_1["x"]); - exports_1("z", _a_1["y"]); + var reexports_1 = {}; + reexports_1["x"] = _a_1["x"]; + reexports_1["z"] = _a_1["y"]; + exports_1(reexports_1); }, function (_bar_1) { exportStar_1(_bar_1); @@ -123,8 +131,10 @@ System.register(['a'], function(exports_1) { return { setters:[ function (_a_1) { - exports_1("s", _a_1["s"]); - exports_1("s2", _a_1["s1"]); + var reexports_1 = {}; + reexports_1["s"] = _a_1["s"]; + reexports_1["s2"] = _a_1["s1"]; + exports_1(reexports_1); }], execute: function() { exports_1("z", z); @@ -136,9 +146,11 @@ System.register(['a'], function(exports_1) { System.register(['a'], function(exports_1) { function foo() { } function exportStar_1(m) { + var exports = {}; for(var n in m) { - if (n !== "default") exports_1(n, m[n]); + if (n !== "default") exports[n] = m[n]; } + exports_1(exports); } return { setters:[ diff --git a/tests/baselines/reference/systemModule9.js b/tests/baselines/reference/systemModule9.js index af05948c351..c282a47b686 100644 --- a/tests/baselines/reference/systemModule9.js +++ b/tests/baselines/reference/systemModule9.js @@ -30,9 +30,11 @@ System.register(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7'], 'z': true }; function exportStar_1(m) { + var exports = {}; for(var n in m) { - if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]); + if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n]; } + exports_1(exports); } return { setters:[