From 0e357af5a3026ae7a120c7f42f7b17f4da6836dc Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 16 Jan 2020 11:46:41 -0800 Subject: [PATCH 1/2] Fix local and exported type alias merging --- src/compiler/checker.ts | 3 ++- .../conformance/types/typeAliases/typeAliasesDoNotMerge.ts | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index b6a40258f69e6..e6ccc157401f5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -29150,7 +29150,7 @@ namespace ts { } } - function checkExportsOnMergedDeclarations(node: Node): void { + function checkExportsOnMergedDeclarations(node: Declaration): void { if (!produceDiagnostics) { return; } @@ -32456,6 +32456,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/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts b/tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts new file mode 100644 index 0000000000000..e8da277b27466 --- /dev/null +++ b/tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts @@ -0,0 +1,3 @@ +// @noLib: true +export type A = {} +type A = {} From 36e7c34fcb64de93d8bf6eebfc2b1126f0f3af5c Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 16 Jan 2020 11:47:53 -0800 Subject: [PATCH 2/2] Add baselines --- .../reference/typeAliasesDoNotMerge.errors.txt | 12 ++++++++++++ tests/baselines/reference/typeAliasesDoNotMerge.js | 8 ++++++++ .../reference/typeAliasesDoNotMerge.symbols | 7 +++++++ .../baselines/reference/typeAliasesDoNotMerge.types | 7 +++++++ .../types/typeAliases/typeAliasesDoNotMerge.ts | 1 - 5 files changed, 34 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 diff --git a/tests/baselines/reference/typeAliasesDoNotMerge.errors.txt b/tests/baselines/reference/typeAliasesDoNotMerge.errors.txt new file mode 100644 index 0000000000000..0f99dc6326afb --- /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 0000000000000..e9ec002f23734 --- /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 0000000000000..94fc3b5665109 --- /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 0000000000000..d949c786def50 --- /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 index e8da277b27466..2f5597e410cae 100644 --- a/tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts +++ b/tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts @@ -1,3 +1,2 @@ -// @noLib: true export type A = {} type A = {}