Skip to content

Commit 1d5749e

Browse files
authored
Fix local and exported type alias merging (microsoft#36237)
* Fix local and exported type alias merging * Add baselines
1 parent 82a3eb5 commit 1d5749e

File tree

6 files changed

+38
-1
lines changed

6 files changed

+38
-1
lines changed

src/compiler/checker.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29187,7 +29187,7 @@ namespace ts {
2918729187
}
2918829188
}
2918929189

29190-
function checkExportsOnMergedDeclarations(node: Node): void {
29190+
function checkExportsOnMergedDeclarations(node: Declaration): void {
2919129191
if (!produceDiagnostics) {
2919229192
return;
2919329193
}
@@ -32493,6 +32493,7 @@ namespace ts {
3249332493
checkGrammarDecoratorsAndModifiers(node);
3249432494

3249532495
checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0);
32496+
checkExportsOnMergedDeclarations(node);
3249632497
checkTypeParameters(node.typeParameters);
3249732498
checkSourceElement(node.type);
3249832499
registerForUnusedIdentifiersCheck(node);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts(1,13): error TS2395: Individual declarations in merged declaration 'A' must be all exported or all local.
2+
tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts(2,6): error TS2395: Individual declarations in merged declaration 'A' must be all exported or all local.
3+
4+
5+
==== tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts (2 errors) ====
6+
export type A = {}
7+
~
8+
!!! error TS2395: Individual declarations in merged declaration 'A' must be all exported or all local.
9+
type A = {}
10+
~
11+
!!! error TS2395: Individual declarations in merged declaration 'A' must be all exported or all local.
12+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [typeAliasesDoNotMerge.ts]
2+
export type A = {}
3+
type A = {}
4+
5+
6+
//// [typeAliasesDoNotMerge.js]
7+
"use strict";
8+
exports.__esModule = true;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
=== tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts ===
2+
export type A = {}
3+
>A : Symbol(A, Decl(typeAliasesDoNotMerge.ts, 0, 0))
4+
5+
type A = {}
6+
>A : Symbol(A, Decl(typeAliasesDoNotMerge.ts, 0, 0), Decl(typeAliasesDoNotMerge.ts, 0, 18))
7+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
=== tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge.ts ===
2+
export type A = {}
3+
>A : import("tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge").A
4+
5+
type A = {}
6+
>A : import("tests/cases/conformance/types/typeAliases/typeAliasesDoNotMerge").A
7+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export type A = {}
2+
type A = {}

0 commit comments

Comments
 (0)