Skip to content

Commit 6fd676b

Browse files
authored
fix(43215): disallow using never as an interface name (microsoft#43217)
1 parent 57775ed commit 6fd676b

6 files changed

+25
-4
lines changed

src/compiler/checker.ts

+1
Original file line numberDiff line numberDiff line change
@@ -36566,6 +36566,7 @@ namespace ts {
3656636566
switch (name.escapedText) {
3656736567
case "any":
3656836568
case "unknown":
36569+
case "never":
3656936570
case "number":
3657036571
case "bigint":
3657136572
case "boolean":

tests/baselines/reference/interfacesWithPredefinedTypesAsNames.errors.txt

+10-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefine
44
tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefinedTypesAsNames.ts(4,11): error TS2427: Interface name cannot be 'boolean'.
55
tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefinedTypesAsNames.ts(5,1): error TS2304: Cannot find name 'interface'.
66
tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefinedTypesAsNames.ts(5,11): error TS1005: ';' expected.
7+
tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefinedTypesAsNames.ts(6,11): error TS2427: Interface name cannot be 'unknown'.
8+
tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefinedTypesAsNames.ts(7,11): error TS2427: Interface name cannot be 'never'.
79

810

9-
==== tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefinedTypesAsNames.ts (6 errors) ====
11+
==== tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefinedTypesAsNames.ts (8 errors) ====
1012
interface any { }
1113
~~~
1214
!!! error TS2427: Interface name cannot be 'any'.
@@ -23,4 +25,10 @@ tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefine
2325
~~~~~~~~~
2426
!!! error TS2304: Cannot find name 'interface'.
2527
~~~~
26-
!!! error TS1005: ';' expected.
28+
!!! error TS1005: ';' expected.
29+
interface unknown {}
30+
~~~~~~~
31+
!!! error TS2427: Interface name cannot be 'unknown'.
32+
interface never {}
33+
~~~~~
34+
!!! error TS2427: Interface name cannot be 'never'.

tests/baselines/reference/interfacesWithPredefinedTypesAsNames.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ interface any { }
33
interface number { }
44
interface string { }
55
interface boolean { }
6-
interface void {}
6+
interface void {}
7+
interface unknown {}
8+
interface never {}
79

810
//// [interfacesWithPredefinedTypesAsNames.js]
911
interface;

tests/baselines/reference/interfacesWithPredefinedTypesAsNames.symbols

+6
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,9 @@ interface boolean { }
1212
>boolean : Symbol(boolean, Decl(interfacesWithPredefinedTypesAsNames.ts, 2, 20))
1313

1414
interface void {}
15+
interface unknown {}
16+
>unknown : Symbol(unknown, Decl(interfacesWithPredefinedTypesAsNames.ts, 4, 17))
17+
18+
interface never {}
19+
>never : Symbol(never, Decl(interfacesWithPredefinedTypesAsNames.ts, 5, 20))
20+

tests/baselines/reference/interfacesWithPredefinedTypesAsNames.types

+2
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ interface void {}
88
>void {} : undefined
99
>{} : {}
1010

11+
interface unknown {}
12+
interface never {}

tests/cases/conformance/interfaces/interfaceDeclarations/interfacesWithPredefinedTypesAsNames.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@ interface any { }
22
interface number { }
33
interface string { }
44
interface boolean { }
5-
interface void {}
5+
interface void {}
6+
interface unknown {}
7+
interface never {}

0 commit comments

Comments
 (0)