From e696bbcd22e590458866f5764968a5fc328a3f97 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Tue, 2 May 2017 14:11:46 -0700 Subject: [PATCH] Never elide an `export *` when `--isolatedModules` is set --- src/compiler/transformers/ts.ts | 2 +- .../isolatedModulesDontElideReExportStar.js | 12 ++++++++++++ .../isolatedModulesDontElideReExportStar.symbols | 8 ++++++++ .../isolatedModulesDontElideReExportStar.types | 8 ++++++++ .../compiler/isolatedModulesDontElideReExportStar.ts | 8 ++++++++ 5 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/isolatedModulesDontElideReExportStar.js create mode 100644 tests/baselines/reference/isolatedModulesDontElideReExportStar.symbols create mode 100644 tests/baselines/reference/isolatedModulesDontElideReExportStar.types create mode 100644 tests/cases/compiler/isolatedModulesDontElideReExportStar.ts diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 555855b5e23..4dca267955c 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2922,7 +2922,7 @@ namespace ts { function visitExportDeclaration(node: ExportDeclaration): VisitResult { if (!node.exportClause) { // Elide a star export if the module it references does not export a value. - return resolver.moduleExportsSomeValue(node.moduleSpecifier) ? node : undefined; + return compilerOptions.isolatedModules || resolver.moduleExportsSomeValue(node.moduleSpecifier) ? node : undefined; } if (!resolver.isValueAliasDeclaration(node)) { diff --git a/tests/baselines/reference/isolatedModulesDontElideReExportStar.js b/tests/baselines/reference/isolatedModulesDontElideReExportStar.js new file mode 100644 index 00000000000..4d546135f74 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesDontElideReExportStar.js @@ -0,0 +1,12 @@ +//// [tests/cases/compiler/isolatedModulesDontElideReExportStar.ts] //// + +//// [a.ts] +export type T = number; + +//// [b.ts] +export * from "./a"; + + +//// [a.js] +//// [b.js] +export * from "./a"; diff --git a/tests/baselines/reference/isolatedModulesDontElideReExportStar.symbols b/tests/baselines/reference/isolatedModulesDontElideReExportStar.symbols new file mode 100644 index 00000000000..38ab78bf498 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesDontElideReExportStar.symbols @@ -0,0 +1,8 @@ +=== /a.ts === +export type T = number; +>T : Symbol(T, Decl(a.ts, 0, 0)) + +=== /b.ts === +export * from "./a"; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/isolatedModulesDontElideReExportStar.types b/tests/baselines/reference/isolatedModulesDontElideReExportStar.types new file mode 100644 index 00000000000..4f68c5ded89 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesDontElideReExportStar.types @@ -0,0 +1,8 @@ +=== /a.ts === +export type T = number; +>T : number + +=== /b.ts === +export * from "./a"; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/cases/compiler/isolatedModulesDontElideReExportStar.ts b/tests/cases/compiler/isolatedModulesDontElideReExportStar.ts new file mode 100644 index 00000000000..37a851a6292 --- /dev/null +++ b/tests/cases/compiler/isolatedModulesDontElideReExportStar.ts @@ -0,0 +1,8 @@ +// @isolatedModules: true +// @target: es6 + +// @filename: /a.ts +export type T = number; + +// @filename: /b.ts +export * from "./a";