diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 062425cbc78aa..a89682da0d9cc 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2859,9 +2859,11 @@ namespace ts { return undefined; } - if (!node.exportClause) { - // Elide a star export if the module it references does not export a value. - return compilerOptions.isolatedModules || resolver.moduleExportsSomeValue(node.moduleSpecifier!) ? node : undefined; + if (!node.exportClause || isNamespaceExport(node.exportClause)) { + // never elide `export from ` declarations - + // they should be kept for sideffects/untyped exports, even when the + // type checker doesn't know about any exports + return node; } if (!resolver.isValueAliasDeclaration(node)) { diff --git a/tests/baselines/reference/declarationEmitAliasExportStar.js b/tests/baselines/reference/declarationEmitAliasExportStar.js index 1e3c124f066f3..79b7a388ab2fb 100644 --- a/tests/baselines/reference/declarationEmitAliasExportStar.js +++ b/tests/baselines/reference/declarationEmitAliasExportStar.js @@ -14,7 +14,18 @@ export const thing2 = (param: things.ThingB) => null; exports.__esModule = true; //// [things.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./thingB"), exports); //// [index.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/es6ExportEqualsInterop.js b/tests/baselines/reference/es6ExportEqualsInterop.js index 297e053d4b6f7..b31dc3b77d4b7 100644 --- a/tests/baselines/reference/es6ExportEqualsInterop.js +++ b/tests/baselines/reference/es6ExportEqualsInterop.js @@ -300,6 +300,8 @@ var class_2 = require("class"); __createBinding(exports, class_2, "a", "a9"); var class_module_2 = require("class-module"); __createBinding(exports, class_module_2, "a", "a0"); +// export-star +__exportStar(require("interface"), exports); __exportStar(require("variable"), exports); __exportStar(require("interface-variable"), exports); __exportStar(require("module"), exports); diff --git a/tests/baselines/reference/exportStarForValues.js b/tests/baselines/reference/exportStarForValues.js index dd8b9c7b4d4d2..b60165297420d 100644 --- a/tests/baselines/reference/exportStarForValues.js +++ b/tests/baselines/reference/exportStarForValues.js @@ -13,8 +13,19 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1"], function (require, exports, file1_1) { "use strict"; exports.__esModule = true; + __exportStar(file1_1, exports); var x; }); diff --git a/tests/baselines/reference/exportStarForValues10.js b/tests/baselines/reference/exportStarForValues10.js index 49f40ab53741a..1723a6c5ce1cc 100644 --- a/tests/baselines/reference/exportStarForValues10.js +++ b/tests/baselines/reference/exportStarForValues10.js @@ -34,7 +34,7 @@ System.register([], function (exports_1, context_1) { }; }); //// [file2.js] -System.register(["file0"], function (exports_1, context_1) { +System.register(["file0", "file1"], function (exports_1, context_1) { "use strict"; var x; var __moduleName = context_1 && context_1.id; @@ -49,6 +49,9 @@ System.register(["file0"], function (exports_1, context_1) { setters: [ function (file0_1_1) { exportStar_1(file0_1_1); + }, + function (file1_1_1) { + exportStar_1(file1_1_1); } ], execute: function () { diff --git a/tests/baselines/reference/exportStarForValues2.js b/tests/baselines/reference/exportStarForValues2.js index f10ae1b9936fa..de75ba8743bb7 100644 --- a/tests/baselines/reference/exportStarForValues2.js +++ b/tests/baselines/reference/exportStarForValues2.js @@ -17,14 +17,36 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1"], function (require, exports, file1_1) { "use strict"; exports.__esModule = true; + __exportStar(file1_1, exports); var x = 1; }); //// [file3.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file2"], function (require, exports, file2_1) { "use strict"; exports.__esModule = true; + __exportStar(file2_1, exports); var x = 1; }); diff --git a/tests/baselines/reference/exportStarForValues3.js b/tests/baselines/reference/exportStarForValues3.js index 83a818a3e81de..2d9cdfad00397 100644 --- a/tests/baselines/reference/exportStarForValues3.js +++ b/tests/baselines/reference/exportStarForValues3.js @@ -29,26 +29,71 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1"], function (require, exports, file1_1) { "use strict"; exports.__esModule = true; + __exportStar(file1_1, exports); var x = 1; }); //// [file3.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1"], function (require, exports, file1_1) { "use strict"; exports.__esModule = true; + __exportStar(file1_1, exports); var x = 1; }); //// [file4.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file2", "file3"], function (require, exports, file2_1, file3_1) { "use strict"; exports.__esModule = true; + __exportStar(file2_1, exports); + __exportStar(file3_1, exports); var x = 1; }); //// [file5.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file4"], function (require, exports, file4_1) { "use strict"; exports.__esModule = true; + __exportStar(file4_1, exports); var x = 1; }); diff --git a/tests/baselines/reference/exportStarForValues4.js b/tests/baselines/reference/exportStarForValues4.js index 0a49e982e29ec..7be7e9af0b11c 100644 --- a/tests/baselines/reference/exportStarForValues4.js +++ b/tests/baselines/reference/exportStarForValues4.js @@ -21,14 +21,37 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [file3.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file2"], function (require, exports, file2_1) { "use strict"; exports.__esModule = true; + __exportStar(file2_1, exports); var x = 1; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1", "file3"], function (require, exports, file1_1, file3_1) { "use strict"; exports.__esModule = true; + __exportStar(file1_1, exports); + __exportStar(file3_1, exports); var x = 1; }); diff --git a/tests/baselines/reference/exportStarForValues5.js b/tests/baselines/reference/exportStarForValues5.js index 53e7c68907aca..8c11ea258131a 100644 --- a/tests/baselines/reference/exportStarForValues5.js +++ b/tests/baselines/reference/exportStarForValues5.js @@ -13,8 +13,19 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1"], function (require, exports, file1_1) { "use strict"; exports.__esModule = true; exports.x = void 0; + __exportStar(file1_1, exports); }); diff --git a/tests/baselines/reference/exportStarForValues6.js b/tests/baselines/reference/exportStarForValues6.js index 0e593f4efb523..80715f9198cf4 100644 --- a/tests/baselines/reference/exportStarForValues6.js +++ b/tests/baselines/reference/exportStarForValues6.js @@ -18,12 +18,26 @@ System.register([], function (exports_1, context_1) { }; }); //// [file2.js] -System.register([], function (exports_1, context_1) { +System.register(["file1"], function (exports_1, context_1) { "use strict"; var x; var __moduleName = context_1 && context_1.id; + var exportedNames_1 = { + "x": true + }; + function exportStar_1(m) { + var exports = {}; + for (var n in m) { + if (n !== "default" && !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n]; + } + exports_1(exports); + } return { - setters: [], + setters: [ + function (file1_1_1) { + exportStar_1(file1_1_1); + } + ], execute: function () { exports_1("x", x = 1); } diff --git a/tests/baselines/reference/exportStarForValues7.js b/tests/baselines/reference/exportStarForValues7.js index 8c7d69d4e8c81..5bf4d7ed77a55 100644 --- a/tests/baselines/reference/exportStarForValues7.js +++ b/tests/baselines/reference/exportStarForValues7.js @@ -17,10 +17,21 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1"], function (require, exports, file1_1) { "use strict"; exports.__esModule = true; exports.x = void 0; + __exportStar(file1_1, exports); exports.x = 1; }); //// [file3.js] diff --git a/tests/baselines/reference/exportStarForValues8.js b/tests/baselines/reference/exportStarForValues8.js index fe98a17a5a7d1..fcf947407520d 100644 --- a/tests/baselines/reference/exportStarForValues8.js +++ b/tests/baselines/reference/exportStarForValues8.js @@ -29,17 +29,39 @@ define(["require", "exports"], function (require, exports) { exports.__esModule = true; }); //// [file2.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1"], function (require, exports, file1_1) { "use strict"; exports.__esModule = true; exports.x = void 0; + __exportStar(file1_1, exports); exports.x = 1; }); //// [file3.js] -define(["require", "exports"], function (require, exports) { +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +define(["require", "exports", "file1"], function (require, exports, file1_1) { "use strict"; exports.__esModule = true; exports.x = void 0; + __exportStar(file1_1, exports); exports.x = 1; }); //// [file4.js] diff --git a/tests/baselines/reference/exportStarForValues9.js b/tests/baselines/reference/exportStarForValues9.js index e5932f67c09ee..37e62802093c8 100644 --- a/tests/baselines/reference/exportStarForValues9.js +++ b/tests/baselines/reference/exportStarForValues9.js @@ -49,10 +49,11 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); } -define(["require", "exports", "file3"], function (require, exports, file3_1) { +define(["require", "exports", "file1", "file3"], function (require, exports, file1_1, file3_1) { "use strict"; exports.__esModule = true; exports.x = void 0; + __exportStar(file1_1, exports); __exportStar(file3_1, exports); exports.x = 1; }); diff --git a/tests/baselines/reference/exportStarForValuesInSystem.js b/tests/baselines/reference/exportStarForValuesInSystem.js index c7406dc18d87c..43ff01988fea1 100644 --- a/tests/baselines/reference/exportStarForValuesInSystem.js +++ b/tests/baselines/reference/exportStarForValuesInSystem.js @@ -18,12 +18,23 @@ System.register([], function (exports_1, context_1) { }; }); //// [file2.js] -System.register([], function (exports_1, context_1) { +System.register(["file1"], function (exports_1, context_1) { "use strict"; var x; var __moduleName = context_1 && context_1.id; + function exportStar_1(m) { + var exports = {}; + for (var n in m) { + if (n !== "default") exports[n] = m[n]; + } + exports_1(exports); + } return { - setters: [], + setters: [ + function (file1_1_1) { + exportStar_1(file1_1_1); + } + ], execute: function () { x = 1; } diff --git a/tests/baselines/reference/exportStarNotElided.js b/tests/baselines/reference/exportStarNotElided.js new file mode 100644 index 0000000000000..588feb7b7aecc --- /dev/null +++ b/tests/baselines/reference/exportStarNotElided.js @@ -0,0 +1,45 @@ +//// [tests/cases/compiler/exportStarNotElided.ts] //// + +//// [register.ts] +const r: any[] = []; +export function register(data: any) { + r.push(data); +} +//// [data1.ts] +import { register } from "./"; +register("ok"); +//// [index.ts] +export * from "./register"; +export * from "./data1"; +export * as aliased from "./data1"; + +//// [register.js] +"use strict"; +exports.__esModule = true; +exports.register = void 0; +var r = []; +function register(data) { + r.push(data); +} +exports.register = register; +//// [index.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} +exports.__esModule = true; +__exportStar(require("./register"), exports); +__exportStar(require("./data1"), exports); +exports.aliased = require("./data1"); +//// [data1.js] +"use strict"; +exports.__esModule = true; +var _1 = require("./"); +_1.register("ok"); diff --git a/tests/baselines/reference/exportStarNotElided.symbols b/tests/baselines/reference/exportStarNotElided.symbols new file mode 100644 index 0000000000000..753cfc2e557dc --- /dev/null +++ b/tests/baselines/reference/exportStarNotElided.symbols @@ -0,0 +1,27 @@ +=== tests/cases/compiler/register.ts === +const r: any[] = []; +>r : Symbol(r, Decl(register.ts, 0, 5)) + +export function register(data: any) { +>register : Symbol(register, Decl(register.ts, 0, 20)) +>data : Symbol(data, Decl(register.ts, 1, 25)) + + r.push(data); +>r.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) +>r : Symbol(r, Decl(register.ts, 0, 5)) +>push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) +>data : Symbol(data, Decl(register.ts, 1, 25)) +} +=== tests/cases/compiler/data1.ts === +import { register } from "./"; +>register : Symbol(register, Decl(data1.ts, 0, 8)) + +register("ok"); +>register : Symbol(register, Decl(data1.ts, 0, 8)) + +=== tests/cases/compiler/index.ts === +export * from "./register"; +export * from "./data1"; +export * as aliased from "./data1"; +>aliased : Symbol(aliased, Decl(index.ts, 2, 6)) + diff --git a/tests/baselines/reference/exportStarNotElided.types b/tests/baselines/reference/exportStarNotElided.types new file mode 100644 index 0000000000000..fb492ed5e4828 --- /dev/null +++ b/tests/baselines/reference/exportStarNotElided.types @@ -0,0 +1,31 @@ +=== tests/cases/compiler/register.ts === +const r: any[] = []; +>r : any[] +>[] : undefined[] + +export function register(data: any) { +>register : (data: any) => void +>data : any + + r.push(data); +>r.push(data) : number +>r.push : (...items: any[]) => number +>r : any[] +>push : (...items: any[]) => number +>data : any +} +=== tests/cases/compiler/data1.ts === +import { register } from "./"; +>register : (data: any) => void + +register("ok"); +>register("ok") : void +>register : (data: any) => void +>"ok" : "ok" + +=== tests/cases/compiler/index.ts === +export * from "./register"; +export * from "./data1"; +export * as aliased from "./data1"; +>aliased : typeof aliased + diff --git a/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js b/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js index 931eb9e753504..b7d9dc5503c4f 100644 --- a/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js +++ b/tests/baselines/reference/moduleDeclarationExportStarShadowingGlobalIsNameable.js @@ -30,7 +30,18 @@ export const func = (account: model.Account, acc2: model.Acc) => {}; exports.__esModule = true; //// [index.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./account"), exports); //// [index.js] "use strict"; exports.__esModule = true; diff --git a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js index b2d1ef971f773..3115ad790b8da 100644 --- a/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js +++ b/tests/baselines/reference/symbolLinkDeclarationEmitModuleNames.js @@ -53,6 +53,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); } exports.__esModule = true; +__exportStar(require("./src/value-promise"), exports); __exportStar(require("./src/bindingkey"), exports); //// [application.js] "use strict"; diff --git a/tests/baselines/reference/tsbuild/watchMode/reexport/Reports-errors-correctly.js b/tests/baselines/reference/tsbuild/watchMode/reexport/Reports-errors-correctly.js index 41710a9838db8..eef457c607ab4 100644 --- a/tests/baselines/reference/tsbuild/watchMode/reexport/Reports-errors-correctly.js +++ b/tests/baselines/reference/tsbuild/watchMode/reexport/Reports-errors-correctly.js @@ -76,7 +76,18 @@ export interface Session { //// [/user/username/projects/reexport/out/pure/index.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./session"), exports); //// [/user/username/projects/reexport/out/pure/index.d.ts] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js index cbb55332d2f33..e2a184e07fc76 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js @@ -61,12 +61,34 @@ exports.__esModule = true; //// [/user/username/projects/myproject/lib1/tools/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools.interface"), exports); //// [/user/username/projects/myproject/lib1/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools/public"), exports); //// [/user/username/projects/myproject/lib2/data2.js] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js index f4001c90ad997..11c313dbd4869 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependencies/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js @@ -55,12 +55,34 @@ exports.__esModule = true; //// [/user/username/projects/myproject/lib1/tools/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools.interface"), exports); //// [/user/username/projects/myproject/lib1/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools/public"), exports); //// [/user/username/projects/myproject/lib2/data.js] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js index 8235259091bb7..2ac7c97495868 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js @@ -67,7 +67,18 @@ export interface ITest { //// [/user/username/projects/myproject/lib1/tools/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools.interface"), exports); //// [/user/username/projects/myproject/lib1/tools/public.d.ts] @@ -76,7 +87,18 @@ export * from "./tools.interface"; //// [/user/username/projects/myproject/lib1/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools/public"), exports); //// [/user/username/projects/myproject/lib1/public.d.ts] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js index 4b4558e6ea39e..83b2cac9b9bdd 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/assumeChangesOnlyAffectDirectDependenciesAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js @@ -61,7 +61,18 @@ export interface ITest { //// [/user/username/projects/myproject/lib1/tools/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools.interface"), exports); //// [/user/username/projects/myproject/lib1/tools/public.d.ts] @@ -70,7 +81,18 @@ export * from "./tools.interface"; //// [/user/username/projects/myproject/lib1/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools/public"), exports); //// [/user/username/projects/myproject/lib1/public.d.ts] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js index a26fece26cf63..14cd0d8ca8100 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js @@ -61,12 +61,34 @@ exports.__esModule = true; //// [/user/username/projects/myproject/lib1/tools/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools.interface"), exports); //// [/user/username/projects/myproject/lib1/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools/public"), exports); //// [/user/username/projects/myproject/lib2/data2.js] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js index 3f2a63e26715a..ed2db74ab376e 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/default/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js @@ -55,12 +55,34 @@ exports.__esModule = true; //// [/user/username/projects/myproject/lib1/tools/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools.interface"), exports); //// [/user/username/projects/myproject/lib1/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools/public"), exports); //// [/user/username/projects/myproject/lib2/data.js] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js index dbf5d8ab0b204..8505910366c83 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-circular-import-and-exports.js @@ -67,7 +67,18 @@ export interface ITest { //// [/user/username/projects/myproject/lib1/tools/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools.interface"), exports); //// [/user/username/projects/myproject/lib1/tools/public.d.ts] @@ -76,7 +87,18 @@ export * from "./tools.interface"; //// [/user/username/projects/myproject/lib1/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools/public"), exports); //// [/user/username/projects/myproject/lib1/public.d.ts] diff --git a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js index 550f8b3c61a0f..fa5999edd2e32 100644 --- a/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js +++ b/tests/baselines/reference/tscWatch/emitAndErrorUpdates/defaultAndD/updates-errors-when-file-transitively-exported-file-changes/when-there-are-no-circular-import-and-exports.js @@ -61,7 +61,18 @@ export interface ITest { //// [/user/username/projects/myproject/lib1/tools/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools.interface"), exports); //// [/user/username/projects/myproject/lib1/tools/public.d.ts] @@ -70,7 +81,18 @@ export * from "./tools.interface"; //// [/user/username/projects/myproject/lib1/public.js] "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) __createBinding(exports, m, p); +} exports.__esModule = true; +__exportStar(require("./tools/public"), exports); //// [/user/username/projects/myproject/lib1/public.d.ts] diff --git a/tests/cases/compiler/exportStarNotElided.ts b/tests/cases/compiler/exportStarNotElided.ts new file mode 100644 index 0000000000000..aea8373231901 --- /dev/null +++ b/tests/cases/compiler/exportStarNotElided.ts @@ -0,0 +1,12 @@ +// @filename: register.ts +const r: any[] = []; +export function register(data: any) { + r.push(data); +} +// @filename: data1.ts +import { register } from "./"; +register("ok"); +// @filename: index.ts +export * from "./register"; +export * from "./data1"; +export * as aliased from "./data1"; \ No newline at end of file