Skip to content

Commit 5af72b5

Browse files
Merge pull request microsoft#22993 from dhruvrajvanshi/issue-22785
Issue 22785
2 parents 4309c0e + 866c542 commit 5af72b5

File tree

6 files changed

+61
-18
lines changed

6 files changed

+61
-18
lines changed

src/compiler/utilities.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2059,12 +2059,12 @@ namespace ts {
20592059
// Name in member declaration or property name in property access
20602060
return (<NamedDeclaration | PropertyAccessExpression>parent).name === node;
20612061
case SyntaxKind.QualifiedName:
2062-
// Name on right hand side of dot in a type query
2062+
// Name on right hand side of dot in a type query or type reference
20632063
if ((<QualifiedName>parent).right === node) {
20642064
while (parent.kind === SyntaxKind.QualifiedName) {
20652065
parent = parent.parent;
20662066
}
2067-
return parent.kind === SyntaxKind.TypeQuery;
2067+
return parent.kind === SyntaxKind.TypeQuery || parent.kind === SyntaxKind.TypeReference;
20682068
}
20692069
return false;
20702070
case SyntaxKind.BindingElement:
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//// [strictModeEnumMemberNameReserved.ts]
2+
"use strict";
3+
enum E {
4+
static
5+
}
6+
7+
const x1: E.static = E.static;
8+
9+
10+
//// [strictModeEnumMemberNameReserved.js]
11+
"use strict";
12+
var E;
13+
(function (E) {
14+
E[E["static"] = 0] = "static";
15+
})(E || (E = {}));
16+
var x1 = E.static;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
=== tests/cases/compiler/strictModeEnumMemberNameReserved.ts ===
2+
"use strict";
3+
enum E {
4+
>E : Symbol(E, Decl(strictModeEnumMemberNameReserved.ts, 0, 13))
5+
6+
static
7+
>static : Symbol(E.static, Decl(strictModeEnumMemberNameReserved.ts, 1, 8))
8+
}
9+
10+
const x1: E.static = E.static;
11+
>x1 : Symbol(x1, Decl(strictModeEnumMemberNameReserved.ts, 5, 5))
12+
>E : Symbol(E, Decl(strictModeEnumMemberNameReserved.ts, 0, 13))
13+
>static : Symbol(E.static, Decl(strictModeEnumMemberNameReserved.ts, 1, 8))
14+
>E.static : Symbol(E.static, Decl(strictModeEnumMemberNameReserved.ts, 1, 8))
15+
>E : Symbol(E, Decl(strictModeEnumMemberNameReserved.ts, 0, 13))
16+
>static : Symbol(E.static, Decl(strictModeEnumMemberNameReserved.ts, 1, 8))
17+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
=== tests/cases/compiler/strictModeEnumMemberNameReserved.ts ===
2+
"use strict";
3+
>"use strict" : "use strict"
4+
5+
enum E {
6+
>E : E
7+
8+
static
9+
>static : E
10+
}
11+
12+
const x1: E.static = E.static;
13+
>x1 : E
14+
>E : any
15+
>static : E
16+
>E.static : E
17+
>E : typeof E
18+
>static : E
19+

tests/baselines/reference/strictModeReservedWord.errors.txt

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,17 @@ tests/cases/compiler/strictModeReservedWord.ts(19,21): error TS1212: Identifier
2828
tests/cases/compiler/strictModeReservedWord.ts(19,21): error TS2503: Cannot find namespace 'private'.
2929
tests/cases/compiler/strictModeReservedWord.ts(20,22): error TS1212: Identifier expected. 'private' is a reserved word in strict mode.
3030
tests/cases/compiler/strictModeReservedWord.ts(20,22): error TS2503: Cannot find namespace 'private'.
31-
tests/cases/compiler/strictModeReservedWord.ts(20,30): error TS1212: Identifier expected. 'package' is a reserved word in strict mode.
3231
tests/cases/compiler/strictModeReservedWord.ts(21,22): error TS1212: Identifier expected. 'private' is a reserved word in strict mode.
3332
tests/cases/compiler/strictModeReservedWord.ts(21,22): error TS2503: Cannot find namespace 'private'.
34-
tests/cases/compiler/strictModeReservedWord.ts(21,30): error TS1212: Identifier expected. 'package' is a reserved word in strict mode.
35-
tests/cases/compiler/strictModeReservedWord.ts(21,38): error TS1212: Identifier expected. 'protected' is a reserved word in strict mode.
3633
tests/cases/compiler/strictModeReservedWord.ts(22,9): error TS2300: Duplicate identifier 'b'.
3734
tests/cases/compiler/strictModeReservedWord.ts(22,12): error TS1212: Identifier expected. 'interface' is a reserved word in strict mode.
3835
tests/cases/compiler/strictModeReservedWord.ts(22,12): error TS2503: Cannot find namespace 'interface'.
39-
tests/cases/compiler/strictModeReservedWord.ts(22,22): error TS1212: Identifier expected. 'package' is a reserved word in strict mode.
40-
tests/cases/compiler/strictModeReservedWord.ts(22,30): error TS1212: Identifier expected. 'implements' is a reserved word in strict mode.
4136
tests/cases/compiler/strictModeReservedWord.ts(23,5): error TS2552: Cannot find name 'ublic'. Did you mean 'public'?
4237
tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS1212: Identifier expected. 'static' is a reserved word in strict mode.
4338
tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
4439

4540

46-
==== tests/cases/compiler/strictModeReservedWord.ts (43 errors) ====
41+
==== tests/cases/compiler/strictModeReservedWord.ts (38 errors) ====
4742
let let = 10;
4843
~~~
4944
!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations.
@@ -124,28 +119,18 @@ tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS2349: Cannot invok
124119
!!! error TS1212: Identifier expected. 'private' is a reserved word in strict mode.
125120
~~~~~~~
126121
!!! error TS2503: Cannot find namespace 'private'.
127-
~~~~~~~
128-
!!! error TS1212: Identifier expected. 'package' is a reserved word in strict mode.
129122
function foo2(x: private.package.protected) { }
130123
~~~~~~~
131124
!!! error TS1212: Identifier expected. 'private' is a reserved word in strict mode.
132125
~~~~~~~
133126
!!! error TS2503: Cannot find namespace 'private'.
134-
~~~~~~~
135-
!!! error TS1212: Identifier expected. 'package' is a reserved word in strict mode.
136-
~~~~~~~~~
137-
!!! error TS1212: Identifier expected. 'protected' is a reserved word in strict mode.
138127
let b: interface.package.implements.B;
139128
~
140129
!!! error TS2300: Duplicate identifier 'b'.
141130
~~~~~~~~~
142131
!!! error TS1212: Identifier expected. 'interface' is a reserved word in strict mode.
143132
~~~~~~~~~
144133
!!! error TS2503: Cannot find namespace 'interface'.
145-
~~~~~~~
146-
!!! error TS1212: Identifier expected. 'package' is a reserved word in strict mode.
147-
~~~~~~~~~~
148-
!!! error TS1212: Identifier expected. 'implements' is a reserved word in strict mode.
149134
ublic();
150135
~~~~~
151136
!!! error TS2552: Cannot find name 'ublic'. Did you mean 'public'?
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
"use strict";
2+
enum E {
3+
static
4+
}
5+
6+
const x1: E.static = E.static;

0 commit comments

Comments
 (0)