From 38a85cfbf47cf1b96077bbdb13cbbfc23cd0aa89 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 29 Aug 2018 15:47:52 -0700 Subject: [PATCH 1/2] Add test to verify #26669 where declaration output is incorrect when declaration flag is not set explicitly in options --- .../reference/declarationEmitWithComposite.js | 14 ++++++++++++++ .../reference/declarationEmitWithComposite.symbols | 10 ++++++++++ .../reference/declarationEmitWithComposite.types | 8 ++++++++ .../cases/compiler/declarationEmitWithComposite.ts | 13 +++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 tests/baselines/reference/declarationEmitWithComposite.js create mode 100644 tests/baselines/reference/declarationEmitWithComposite.symbols create mode 100644 tests/baselines/reference/declarationEmitWithComposite.types create mode 100644 tests/cases/compiler/declarationEmitWithComposite.ts diff --git a/tests/baselines/reference/declarationEmitWithComposite.js b/tests/baselines/reference/declarationEmitWithComposite.js new file mode 100644 index 00000000000..ba6b838ac8f --- /dev/null +++ b/tests/baselines/reference/declarationEmitWithComposite.js @@ -0,0 +1,14 @@ +//// [test.ts] +interface Foo { + x: number; +} +export default Foo; + + +//// [/foo/out/test.js] +"use strict"; +exports.__esModule = true; + + +//// [/foo/out/test.d.ts] +export default Foo; diff --git a/tests/baselines/reference/declarationEmitWithComposite.symbols b/tests/baselines/reference/declarationEmitWithComposite.symbols new file mode 100644 index 00000000000..74f9fba394b --- /dev/null +++ b/tests/baselines/reference/declarationEmitWithComposite.symbols @@ -0,0 +1,10 @@ +=== /foo/test.ts === +interface Foo { +>Foo : Symbol(Foo, Decl(test.ts, 0, 0)) + + x: number; +>x : Symbol(Foo.x, Decl(test.ts, 0, 15)) +} +export default Foo; +>Foo : Symbol(Foo, Decl(test.ts, 0, 0)) + diff --git a/tests/baselines/reference/declarationEmitWithComposite.types b/tests/baselines/reference/declarationEmitWithComposite.types new file mode 100644 index 00000000000..489a84bb9f1 --- /dev/null +++ b/tests/baselines/reference/declarationEmitWithComposite.types @@ -0,0 +1,8 @@ +=== /foo/test.ts === +interface Foo { + x: number; +>x : number +} +export default Foo; +>Foo : Foo + diff --git a/tests/cases/compiler/declarationEmitWithComposite.ts b/tests/cases/compiler/declarationEmitWithComposite.ts new file mode 100644 index 00000000000..9d039ce2271 --- /dev/null +++ b/tests/cases/compiler/declarationEmitWithComposite.ts @@ -0,0 +1,13 @@ +// @composite: true +// @fullEmitPaths: true + +// @filename: /foo/tsconfig.json +{ + "compilerOptions": { "composite": true, "outDir": "out" } +} + +// @filename: /foo/test.ts +interface Foo { + x: number; +} +export default Foo; From 262fa3ac312f19c50d5966f76ec84e6aded15918 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 29 Aug 2018 16:16:01 -0700 Subject: [PATCH 2/2] Correctly mark visibile nodes when declaration isnt explicitly turned on but composite is true Fixes #26669 --- src/compiler/checker.ts | 4 ++-- tests/baselines/reference/declarationEmitWithComposite.js | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index db02365fd17..5fc3f2b1ac2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -26347,7 +26347,7 @@ namespace ts { function checkExportSpecifier(node: ExportSpecifier) { checkAliasSymbol(node); - if (compilerOptions.declaration) { + if (getEmitDeclarations(compilerOptions)) { collectLinkedAliases(node.propertyName || node.name, /*setVisibility*/ true); } if (!node.parent.parent.moduleSpecifier) { @@ -26388,7 +26388,7 @@ namespace ts { if (node.expression.kind === SyntaxKind.Identifier) { markExportAsReferenced(node); - if (compilerOptions.declaration) { + if (getEmitDeclarations(compilerOptions)) { collectLinkedAliases(node.expression as Identifier, /*setVisibility*/ true); } } diff --git a/tests/baselines/reference/declarationEmitWithComposite.js b/tests/baselines/reference/declarationEmitWithComposite.js index ba6b838ac8f..3ccdf5c1ea1 100644 --- a/tests/baselines/reference/declarationEmitWithComposite.js +++ b/tests/baselines/reference/declarationEmitWithComposite.js @@ -11,4 +11,7 @@ exports.__esModule = true; //// [/foo/out/test.d.ts] +interface Foo { + x: number; +} export default Foo;