diff --git a/internal/parser/parser.go b/internal/parser/parser.go index 76ac865373..f552f6a3f4 100644 --- a/internal/parser/parser.go +++ b/internal/parser/parser.go @@ -3906,9 +3906,12 @@ func (p *Parser) nextTokenCanFollowModifier() bool { return p.canFollowExportModifier() case ast.KindDefaultKeyword: return p.nextTokenCanFollowDefaultKeyword() - case ast.KindStaticKeyword, ast.KindGetKeyword, ast.KindSetKeyword: + case ast.KindStaticKeyword: p.nextToken() return p.canFollowModifier() + case ast.KindGetKeyword, ast.KindSetKeyword: + p.nextToken() + return p.canFollowGetOrSetKeyword() default: return p.nextTokenIsOnSameLineAndCanFollowModifier() } @@ -3963,6 +3966,10 @@ func (p *Parser) canFollowModifier() bool { return p.token == ast.KindOpenBracketToken || p.token == ast.KindOpenBraceToken || p.token == ast.KindAsteriskToken || p.token == ast.KindDotDotDotToken || p.isLiteralPropertyName() } +func (p *Parser) canFollowGetOrSetKeyword() bool { + return p.token == ast.KindOpenBracketToken || p.isLiteralPropertyName() +} + func (p *Parser) nextTokenIsOnSameLineAndCanFollowModifier() bool { p.nextToken() if p.hasPrecedingLineBreak() { diff --git a/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.errors.txt b/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.errors.txt index dc5bb92165..6994b68f49 100644 --- a/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.errors.txt @@ -1,8 +1,8 @@ error TS2318: Cannot find global type 'IterableIterator'. -canFollowGetSetKeyword.ts(3,5): error TS1003: Identifier expected. -canFollowGetSetKeyword.ts(7,5): error TS1003: Identifier expected. -canFollowGetSetKeyword.ts(11,5): error TS1003: Identifier expected. -canFollowGetSetKeyword.ts(15,5): error TS1003: Identifier expected. +canFollowGetSetKeyword.ts(10,5): error TS18004: No value exists in scope for the shorthand property 'get'. Either declare one or provide an initializer. +canFollowGetSetKeyword.ts(11,5): error TS1005: ',' expected. +canFollowGetSetKeyword.ts(14,5): error TS18004: No value exists in scope for the shorthand property 'set'. Either declare one or provide an initializer. +canFollowGetSetKeyword.ts(15,5): error TS1005: ',' expected. !!! error TS2318: Cannot find global type 'IterableIterator'. @@ -10,24 +10,24 @@ canFollowGetSetKeyword.ts(15,5): error TS1003: Identifier expected. class A { get *x() {} - ~ -!!! error TS1003: Identifier expected. } class B { set *x() {} - ~ -!!! error TS1003: Identifier expected. } const c = { get + ~~~ +!!! error TS18004: No value exists in scope for the shorthand property 'get'. Either declare one or provide an initializer. *x() {} ~ -!!! error TS1003: Identifier expected. +!!! error TS1005: ',' expected. }; const d = { set + ~~~ +!!! error TS18004: No value exists in scope for the shorthand property 'set'. Either declare one or provide an initializer. *x() {} ~ -!!! error TS1003: Identifier expected. +!!! error TS1005: ',' expected. }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.errors.txt.diff deleted file mode 100644 index 4256fe0eb4..0000000000 --- a/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.errors.txt.diff +++ /dev/null @@ -1,46 +0,0 @@ ---- old.canFollowGetSetKeyword.errors.txt -+++ new.canFollowGetSetKeyword.errors.txt -@@= skipped -0, +0 lines =@@ - error TS2318: Cannot find global type 'IterableIterator'. --canFollowGetSetKeyword.ts(10,5): error TS18004: No value exists in scope for the shorthand property 'get'. Either declare one or provide an initializer. --canFollowGetSetKeyword.ts(11,5): error TS1005: ',' expected. --canFollowGetSetKeyword.ts(14,5): error TS18004: No value exists in scope for the shorthand property 'set'. Either declare one or provide an initializer. --canFollowGetSetKeyword.ts(15,5): error TS1005: ',' expected. -+canFollowGetSetKeyword.ts(3,5): error TS1003: Identifier expected. -+canFollowGetSetKeyword.ts(7,5): error TS1003: Identifier expected. -+canFollowGetSetKeyword.ts(11,5): error TS1003: Identifier expected. -+canFollowGetSetKeyword.ts(15,5): error TS1003: Identifier expected. - - - !!! error TS2318: Cannot find global type 'IterableIterator'. -@@= skipped -9, +9 lines =@@ - class A { - get - *x() {} -+ ~ -+!!! error TS1003: Identifier expected. - } - class B { - set - *x() {} -+ ~ -+!!! error TS1003: Identifier expected. - } - const c = { - get -- ~~~ --!!! error TS18004: No value exists in scope for the shorthand property 'get'. Either declare one or provide an initializer. - *x() {} - ~ --!!! error TS1005: ',' expected. -+!!! error TS1003: Identifier expected. - }; - const d = { - set -- ~~~ --!!! error TS18004: No value exists in scope for the shorthand property 'set'. Either declare one or provide an initializer. - *x() {} - ~ --!!! error TS1005: ',' expected. -+!!! error TS1003: Identifier expected. - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.js b/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.js index d46de93609..7f6b67b4ba 100644 --- a/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.js +++ b/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.js @@ -20,14 +20,18 @@ const d = { //// [canFollowGetSetKeyword.js] class A { + get; *x() { } } class B { + set; *x() { } } const c = { + get, *x() { } }; const d = { + set, *x() { } }; diff --git a/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.js.diff b/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.js.diff index 96d585c386..f189e6287a 100644 --- a/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.js.diff +++ b/testdata/baselines/reference/submodule/conformance/canFollowGetSetKeyword.js.diff @@ -59,14 +59,18 @@ - return [2 /*return*/]; - }); } +class A { ++ get; + *x() { } +} +class B { ++ set; + *x() { } +} +const c = { ++ get, + *x() { } +}; +const d = { ++ set, + *x() { } }; \ No newline at end of file