From 1d5749ef78ebfb8a15c86c9335f69b231aba7e50 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 22 Jan 2020 13:16:49 -0800 Subject: [PATCH] Fix local and exported type alias merging (#36237) * Fix local and exported type alias merging * Add baselines --- src/compiler/checker.ts | 3 ++- .../reference/typeAliasesDoNotMerge.errors.txt | 12 ++++++++++++ tests/baselines/reference/typeAliasesDoNotMerge.js | 8 ++++++++ .../reference/typeAliasesDoNotMerge.symbols | 7 +++++++ .../baselines/reference/typeAliasesDoNotMerge.types | 7 +++++++ .../types/typeAliases/typeAliasesDoNotMerge.ts | 2 ++ 6 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/typeAliasesDoNotMerge.errors.txt create mode 100644 tests/baselines/reference/typeAliasesDoNotMerge.js create mode 100644 tests/baselines/reference/typeAliasesDoNotMerge.symbols create mode 100644 tests/baselines/reference/typeAliasesDoNotMerge.types create mode 100644 tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9a5a7d5b36e..a6e33b763c3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -29187,7 +29187,7 @@ namespace ts { } } - function checkExportsOnMergedDeclarations(node: Node): void { + function checkExportsOnMergedDeclarations(node: Declaration): void { if (!produceDiagnostics) { return; } @@ -32493,6 +32493,7 @@ namespace ts { checkGrammarDecoratorsAndModifiers(node); checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0); + checkExportsOnMergedDeclarations(node); checkTypeParameters(node.typeParameters); checkSourceElement(node.type); registerForUnusedIdentifiersCheck(node); diff --git a/tests/baselines/reference/typeAliasesDoNotMerge.errors.txt b/tests/baselines/reference/typeAliasesDoNotMerge.errors.txt new file mode 100644 index 00000000000..0f99dc6326a --- /dev/null +++ b/tests/baselines/reference/typeAliasesDoNotMerge.errors.txt @@ -0,0 +1,12 @@ +tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts(1,13): error TS2395: Individual declarations in merged declaration 'A' must be all exported or all local. +tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts(2,6): error TS2395: Individual declarations in merged declaration 'A' must be all exported or all local. + + +==== tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts (2 errors) ==== + export type A = {} + ~ +!!! error TS2395: Individual declarations in merged declaration 'A' must be all exported or all local. + type A = {} + ~ +!!! error TS2395: Individual declarations in merged declaration 'A' must be all exported or all local. + \ No newline at end of file diff --git a/tests/baselines/reference/typeAliasesDoNotMerge.js b/tests/baselines/reference/typeAliasesDoNotMerge.js new file mode 100644 index 00000000000..e9ec002f237 --- /dev/null +++ b/tests/baselines/reference/typeAliasesDoNotMerge.js @@ -0,0 +1,8 @@ +//// [typeAliasesDoNotMerge.ts] +export type A = {} +type A = {} + + +//// [typeAliasesDoNotMerge.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/typeAliasesDoNotMerge.symbols b/tests/baselines/reference/typeAliasesDoNotMerge.symbols new file mode 100644 index 00000000000..94fc3b56651 --- /dev/null +++ b/tests/baselines/reference/typeAliasesDoNotMerge.symbols @@ -0,0 +1,7 @@ +=== tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts === +export type A = {} +>A : Symbol(A, Decl(typeAliasesDoNotMerge.ts, 0, 0)) + +type A = {} +>A : Symbol(A, Decl(typeAliasesDoNotMerge.ts, 0, 0), Decl(typeAliasesDoNotMerge.ts, 0, 18)) + diff --git a/tests/baselines/reference/typeAliasesDoNotMerge.types b/tests/baselines/reference/typeAliasesDoNotMerge.types new file mode 100644 index 00000000000..d949c786def --- /dev/null +++ b/tests/baselines/reference/typeAliasesDoNotMerge.types @@ -0,0 +1,7 @@ +=== tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts === +export type A = {} +>A : import("tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge").A + +type A = {} +>A : import("tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge").A + diff --git a/tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts b/tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts new file mode 100644 index 00000000000..2f5597e410c --- /dev/null +++ b/tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts @@ -0,0 +1,2 @@ +export type A = {} +type A = {}