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 = {}