Skip to content

Commit 2ff3a38

Browse files
committed
Allow for class static vars to be called static - re: #41127
1 parent 5cea46c commit 2ff3a38

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

src/compiler/parser.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1817,7 +1817,6 @@ namespace ts {
18171817
case SyntaxKind.DefaultKeyword:
18181818
return nextTokenCanFollowDefaultKeyword();
18191819
case SyntaxKind.StaticKeyword:
1820-
return nextTokenIsOnSameLineAndCanFollowModifier();
18211820
case SyntaxKind.GetKeyword:
18221821
case SyntaxKind.SetKeyword:
18231822
nextToken();
@@ -6701,7 +6700,7 @@ namespace ts {
67016700
return list && createNodeArray(list, pos);
67026701
}
67036702

6704-
function tryParseModifier(permitInvalidConstAsModifier?: boolean, stopOnStartOfClassStaticBlock?: boolean): Modifier | undefined {
6703+
function tryParseModifier(permitInvalidConstAsModifier?: boolean, stopOnStartOfClassStaticBlock?: boolean, hasSeenStaticModifier?: boolean): Modifier | undefined {
67056704
const pos = getNodePos();
67066705
const kind = token();
67076706

@@ -6715,6 +6714,9 @@ namespace ts {
67156714
else if (stopOnStartOfClassStaticBlock && token() === SyntaxKind.StaticKeyword && lookAhead(nextTokenIsOpenBrace)) {
67166715
return undefined;
67176716
}
6717+
else if (hasSeenStaticModifier && token() === SyntaxKind.StaticKeyword) {
6718+
return undefined;
6719+
}
67186720
else {
67196721
if (!parseAnyContextualModifier()) {
67206722
return undefined;
@@ -6733,8 +6735,9 @@ namespace ts {
67336735
*/
67346736
function parseModifiers(permitInvalidConstAsModifier?: boolean, stopOnStartOfClassStaticBlock?: boolean): NodeArray<Modifier> | undefined {
67356737
const pos = getNodePos();
6736-
let list, modifier;
6737-
while (modifier = tryParseModifier(permitInvalidConstAsModifier, stopOnStartOfClassStaticBlock)) {
6738+
let list, modifier, hasSeenStatic = false;
6739+
while (modifier = tryParseModifier(permitInvalidConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStatic)) {
6740+
if (modifier.kind === SyntaxKind.StaticKeyword) hasSeenStatic = true;
67386741
list = append(list, modifier);
67396742
}
67406743
return list && createNodeArray(list, pos);

tests/cases/compiler/staticAsIdentifier.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,18 @@ class C3 {
1515
class C4 {
1616
static static foo() {}
1717
}
18+
19+
class C5 {
20+
static static
21+
}
22+
23+
class C6 {
24+
static
25+
static
26+
}
27+
28+
class C7 extends C6 {
29+
static override static
30+
}
31+
32+

0 commit comments

Comments
 (0)