Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit af4201f

Browse filesBrowse files
authored
Retain reexports in js emit even when they export nothing (microsoft#37124)
1 parent 478dbfd commit af4201f
Copy full SHA for af4201f

29 files changed

+525-22Lines changed: 525 additions & 22 deletions
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/compiler/transformers/ts.ts‎

Copy file name to clipboardExpand all lines: src/compiler/transformers/ts.ts
+5-3Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2859,9 +2859,11 @@ namespace ts {
28592859
return undefined;
28602860
}
28612861

2862-
if (!node.exportClause) {
2863-
// Elide a star export if the module it references does not export a value.
2864-
return compilerOptions.isolatedModules || resolver.moduleExportsSomeValue(node.moduleSpecifier!) ? node : undefined;
2862+
if (!node.exportClause || isNamespaceExport(node.exportClause)) {
2863+
// never elide `export <whatever> from <whereever>` declarations -
2864+
// they should be kept for sideffects/untyped exports, even when the
2865+
// type checker doesn't know about any exports
2866+
return node;
28652867
}
28662868

28672869
if (!resolver.isValueAliasDeclaration(node)) {
Collapse file

‎tests/baselines/reference/declarationEmitAliasExportStar.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/declarationEmitAliasExportStar.js
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,18 @@ export const thing2 = (param: things.ThingB) => null;
1414
exports.__esModule = true;
1515
//// [things.js]
1616
"use strict";
17+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18+
if (k2 === undefined) k2 = k;
19+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
20+
}) : (function(o, m, k, k2) {
21+
if (k2 === undefined) k2 = k;
22+
o[k2] = m[k];
23+
}));
24+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
25+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
26+
}
1727
exports.__esModule = true;
28+
__exportStar(require("./thingB"), exports);
1829
//// [index.js]
1930
"use strict";
2031
exports.__esModule = true;
Collapse file

‎tests/baselines/reference/es6ExportEqualsInterop.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/es6ExportEqualsInterop.js
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,8 @@ var class_2 = require("class");
300300
__createBinding(exports, class_2, "a", "a9");
301301
var class_module_2 = require("class-module");
302302
__createBinding(exports, class_module_2, "a", "a0");
303+
// export-star
304+
__exportStar(require("interface"), exports);
303305
__exportStar(require("variable"), exports);
304306
__exportStar(require("interface-variable"), exports);
305307
__exportStar(require("module"), exports);
Collapse file

‎tests/baselines/reference/exportStarForValues.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/exportStarForValues.js
+12-1Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,19 @@ define(["require", "exports"], function (require, exports) {
1313
exports.__esModule = true;
1414
});
1515
//// [file2.js]
16-
define(["require", "exports"], function (require, exports) {
16+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17+
if (k2 === undefined) k2 = k;
18+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
19+
}) : (function(o, m, k, k2) {
20+
if (k2 === undefined) k2 = k;
21+
o[k2] = m[k];
22+
}));
23+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
24+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
25+
}
26+
define(["require", "exports", "file1"], function (require, exports, file1_1) {
1727
"use strict";
1828
exports.__esModule = true;
29+
__exportStar(file1_1, exports);
1930
var x;
2031
});
Collapse file

‎tests/baselines/reference/exportStarForValues10.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/exportStarForValues10.js
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ System.register([], function (exports_1, context_1) {
3434
};
3535
});
3636
//// [file2.js]
37-
System.register(["file0"], function (exports_1, context_1) {
37+
System.register(["file0", "file1"], function (exports_1, context_1) {
3838
"use strict";
3939
var x;
4040
var __moduleName = context_1 && context_1.id;
@@ -49,6 +49,9 @@ System.register(["file0"], function (exports_1, context_1) {
4949
setters: [
5050
function (file0_1_1) {
5151
exportStar_1(file0_1_1);
52+
},
53+
function (file1_1_1) {
54+
exportStar_1(file1_1_1);
5255
}
5356
],
5457
execute: function () {
Collapse file

‎tests/baselines/reference/exportStarForValues2.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/exportStarForValues2.js
+24-2Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,36 @@ define(["require", "exports"], function (require, exports) {
1717
exports.__esModule = true;
1818
});
1919
//// [file2.js]
20-
define(["require", "exports"], function (require, exports) {
20+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
21+
if (k2 === undefined) k2 = k;
22+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
23+
}) : (function(o, m, k, k2) {
24+
if (k2 === undefined) k2 = k;
25+
o[k2] = m[k];
26+
}));
27+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
28+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
29+
}
30+
define(["require", "exports", "file1"], function (require, exports, file1_1) {
2131
"use strict";
2232
exports.__esModule = true;
33+
__exportStar(file1_1, exports);
2334
var x = 1;
2435
});
2536
//// [file3.js]
26-
define(["require", "exports"], function (require, exports) {
37+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
38+
if (k2 === undefined) k2 = k;
39+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
40+
}) : (function(o, m, k, k2) {
41+
if (k2 === undefined) k2 = k;
42+
o[k2] = m[k];
43+
}));
44+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
45+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
46+
}
47+
define(["require", "exports", "file2"], function (require, exports, file2_1) {
2748
"use strict";
2849
exports.__esModule = true;
50+
__exportStar(file2_1, exports);
2951
var x = 1;
3052
});
Collapse file

‎tests/baselines/reference/exportStarForValues3.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/exportStarForValues3.js
+49-4Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,71 @@ define(["require", "exports"], function (require, exports) {
2929
exports.__esModule = true;
3030
});
3131
//// [file2.js]
32-
define(["require", "exports"], function (require, exports) {
32+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
33+
if (k2 === undefined) k2 = k;
34+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
35+
}) : (function(o, m, k, k2) {
36+
if (k2 === undefined) k2 = k;
37+
o[k2] = m[k];
38+
}));
39+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
40+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
41+
}
42+
define(["require", "exports", "file1"], function (require, exports, file1_1) {
3343
"use strict";
3444
exports.__esModule = true;
45+
__exportStar(file1_1, exports);
3546
var x = 1;
3647
});
3748
//// [file3.js]
38-
define(["require", "exports"], function (require, exports) {
49+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
50+
if (k2 === undefined) k2 = k;
51+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
52+
}) : (function(o, m, k, k2) {
53+
if (k2 === undefined) k2 = k;
54+
o[k2] = m[k];
55+
}));
56+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
57+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
58+
}
59+
define(["require", "exports", "file1"], function (require, exports, file1_1) {
3960
"use strict";
4061
exports.__esModule = true;
62+
__exportStar(file1_1, exports);
4163
var x = 1;
4264
});
4365
//// [file4.js]
44-
define(["require", "exports"], function (require, exports) {
66+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
67+
if (k2 === undefined) k2 = k;
68+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
69+
}) : (function(o, m, k, k2) {
70+
if (k2 === undefined) k2 = k;
71+
o[k2] = m[k];
72+
}));
73+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
74+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
75+
}
76+
define(["require", "exports", "file2", "file3"], function (require, exports, file2_1, file3_1) {
4577
"use strict";
4678
exports.__esModule = true;
79+
__exportStar(file2_1, exports);
80+
__exportStar(file3_1, exports);
4781
var x = 1;
4882
});
4983
//// [file5.js]
50-
define(["require", "exports"], function (require, exports) {
84+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
85+
if (k2 === undefined) k2 = k;
86+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
87+
}) : (function(o, m, k, k2) {
88+
if (k2 === undefined) k2 = k;
89+
o[k2] = m[k];
90+
}));
91+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
92+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
93+
}
94+
define(["require", "exports", "file4"], function (require, exports, file4_1) {
5195
"use strict";
5296
exports.__esModule = true;
97+
__exportStar(file4_1, exports);
5398
var x = 1;
5499
});
Collapse file

‎tests/baselines/reference/exportStarForValues4.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/exportStarForValues4.js
+25-2Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,37 @@ define(["require", "exports"], function (require, exports) {
2121
exports.__esModule = true;
2222
});
2323
//// [file3.js]
24-
define(["require", "exports"], function (require, exports) {
24+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
25+
if (k2 === undefined) k2 = k;
26+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
27+
}) : (function(o, m, k, k2) {
28+
if (k2 === undefined) k2 = k;
29+
o[k2] = m[k];
30+
}));
31+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
32+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
33+
}
34+
define(["require", "exports", "file2"], function (require, exports, file2_1) {
2535
"use strict";
2636
exports.__esModule = true;
37+
__exportStar(file2_1, exports);
2738
var x = 1;
2839
});
2940
//// [file2.js]
30-
define(["require", "exports"], function (require, exports) {
41+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
42+
if (k2 === undefined) k2 = k;
43+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
44+
}) : (function(o, m, k, k2) {
45+
if (k2 === undefined) k2 = k;
46+
o[k2] = m[k];
47+
}));
48+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
49+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
50+
}
51+
define(["require", "exports", "file1", "file3"], function (require, exports, file1_1, file3_1) {
3152
"use strict";
3253
exports.__esModule = true;
54+
__exportStar(file1_1, exports);
55+
__exportStar(file3_1, exports);
3356
var x = 1;
3457
});
Collapse file

‎tests/baselines/reference/exportStarForValues5.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/exportStarForValues5.js
+12-1Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,19 @@ define(["require", "exports"], function (require, exports) {
1313
exports.__esModule = true;
1414
});
1515
//// [file2.js]
16-
define(["require", "exports"], function (require, exports) {
16+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17+
if (k2 === undefined) k2 = k;
18+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
19+
}) : (function(o, m, k, k2) {
20+
if (k2 === undefined) k2 = k;
21+
o[k2] = m[k];
22+
}));
23+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
24+
for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p);
25+
}
26+
define(["require", "exports", "file1"], function (require, exports, file1_1) {
1727
"use strict";
1828
exports.__esModule = true;
1929
exports.x = void 0;
30+
__exportStar(file1_1, exports);
2031
});
Collapse file

‎tests/baselines/reference/exportStarForValues6.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/exportStarForValues6.js
+16-2Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,26 @@ System.register([], function (exports_1, context_1) {
1818
};
1919
});
2020
//// [file2.js]
21-
System.register([], function (exports_1, context_1) {
21+
System.register(["file1"], function (exports_1, context_1) {
2222
"use strict";
2323
var x;
2424
var __moduleName = context_1 && context_1.id;
25+
var exportedNames_1 = {
26+
"x": true
27+
};
28+
function exportStar_1(m) {
29+
var exports = {};
30+
for (var n in m) {
31+
if (n !== "default" && !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
32+
}
33+
exports_1(exports);
34+
}
2535
return {
26-
setters: [],
36+
setters: [
37+
function (file1_1_1) {
38+
exportStar_1(file1_1_1);
39+
}
40+
],
2741
execute: function () {
2842
exports_1("x", x = 1);
2943
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.