Skip to content

Commit 22961e5

Browse files
committed
System: use bulk exports
1 parent 96b02a8 commit 22961e5

File tree

3 files changed

+41
-16
lines changed

3 files changed

+41
-16
lines changed

src/compiler/emitter.ts

+18-7
Original file line numberDiff line numberDiff line change
@@ -5756,17 +5756,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
57565756
write(`function ${exportStarFunction}(m) {`);
57575757
increaseIndent();
57585758
writeLine();
5759+
write(`var exports = {};`);
5760+
writeLine();
57595761
write(`for(var n in m) {`);
57605762
increaseIndent();
57615763
writeLine();
57625764
write(`if (n !== "default"`);
57635765
if (localNames) {
57645766
write(`&& !${localNames}.hasOwnProperty(n)`);
57655767
}
5766-
write(`) ${exportFunctionForFile}(n, m[n]);`);
5768+
write(`) exports[n] = m[n];`);
57675769
decreaseIndent();
57685770
writeLine();
57695771
write("}");
5772+
writeLine();
5773+
write(`${exportFunctionForFile}(exports);`)
57705774
decreaseIndent();
57715775
writeLine();
57725776
write("}");
@@ -6099,16 +6103,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
60996103
if ((<ExportDeclaration>importNode).exportClause) {
61006104
// export {a, b as c} from 'foo'
61016105
// emit as:
6102-
// exports('a', _foo["a"])
6103-
// exports('c', _foo["b"])
6106+
// var reexports = {}
6107+
// reexports['a'] = _foo["a"];
6108+
// reexports['c'] = _foo["b"];
6109+
// exports_(reexports);
6110+
let reexportsVariableName = makeUniqueName("reexports");
6111+
writeLine();
6112+
write(`var ${reexportsVariableName} = {};`)
6113+
writeLine();
61046114
for (let e of (<ExportDeclaration>importNode).exportClause.elements) {
6105-
writeLine();
6106-
write(`${exportFunctionForFile}("`);
6115+
write(`${reexportsVariableName}["`);
61076116
emitNodeWithoutSourceMap(e.name);
6108-
write(`", ${parameterName}["`);
6117+
write(`"] = ${parameterName}["`);
61096118
emitNodeWithoutSourceMap(e.propertyName || e.name);
6110-
write(`"]);`);
6119+
write(`"];`);
6120+
writeLine();
61116121
}
6122+
write(`${exportFunctionForFile}(${reexportsVariableName});`);
61126123
}
61136124
else {
61146125
writeLine();

tests/baselines/reference/systemModule11.js

+20-8
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ System.register(['bar'], function(exports_1) {
5151
'foo': true
5252
};
5353
function exportStar_1(m) {
54+
var exports = {};
5455
for(var n in m) {
55-
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]);
56+
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
5657
}
58+
exports_1(exports);
5759
}
5860
return {
5961
setters:[
@@ -72,9 +74,11 @@ System.register(['bar'], function(exports_1) {
7274
'y1': true
7375
};
7476
function exportStar_1(m) {
77+
var exports = {};
7578
for(var n in m) {
76-
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]);
79+
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
7780
}
81+
exports_1(exports);
7882
}
7983
return {
8084
setters:[
@@ -96,15 +100,19 @@ System.register(['a', 'bar'], function(exports_1) {
96100
'z': true
97101
};
98102
function exportStar_1(m) {
103+
var exports = {};
99104
for(var n in m) {
100-
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]);
105+
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
101106
}
107+
exports_1(exports);
102108
}
103109
return {
104110
setters:[
105111
function (_a_1) {
106-
exports_1("x", _a_1["x"]);
107-
exports_1("z", _a_1["y"]);
112+
var reexports_1 = {};
113+
reexports_1["x"] = _a_1["x"];
114+
reexports_1["z"] = _a_1["y"];
115+
exports_1(reexports_1);
108116
},
109117
function (_bar_1) {
110118
exportStar_1(_bar_1);
@@ -123,8 +131,10 @@ System.register(['a'], function(exports_1) {
123131
return {
124132
setters:[
125133
function (_a_1) {
126-
exports_1("s", _a_1["s"]);
127-
exports_1("s2", _a_1["s1"]);
134+
var reexports_1 = {};
135+
reexports_1["s"] = _a_1["s"];
136+
reexports_1["s2"] = _a_1["s1"];
137+
exports_1(reexports_1);
128138
}],
129139
execute: function() {
130140
exports_1("z", z);
@@ -136,9 +146,11 @@ System.register(['a'], function(exports_1) {
136146
System.register(['a'], function(exports_1) {
137147
function foo() { }
138148
function exportStar_1(m) {
149+
var exports = {};
139150
for(var n in m) {
140-
if (n !== "default") exports_1(n, m[n]);
151+
if (n !== "default") exports[n] = m[n];
141152
}
153+
exports_1(exports);
142154
}
143155
return {
144156
setters:[

tests/baselines/reference/systemModule9.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ System.register(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7'],
3030
'z': true
3131
};
3232
function exportStar_1(m) {
33+
var exports = {};
3334
for(var n in m) {
34-
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]);
35+
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
3536
}
37+
exports_1(exports);
3638
}
3739
return {
3840
setters:[

0 commit comments

Comments
 (0)