Skip to content

Commit 3a49ed4

Browse files
committed
Fix modifierFollowers
The token `case` is a modifier follower
1 parent ae53967 commit 3a49ed4

File tree

2 files changed

+27
-21
lines changed

2 files changed

+27
-21
lines changed

compiler/src/dotty/tools/dotc/parsing/Tokens.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ object Tokens extends TokensCommon {
236236

237237
final val modifierTokensOrCase: TokenSet = modifierTokens | BitSet(CASE)
238238

239-
final val modifierFollowers = modifierTokens | defIntroTokens
239+
final val modifierFollowers = modifierTokensOrCase | defIntroTokens
240240

241241
/** Is token only legal as start of statement (eof also included)? */
242242
final val mustStartStatTokens: TokenSet = defIntroTokens | modifierTokens | BitSet(IMPORT, PACKAGE)

tests/neg/i5495.scala

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,33 @@ implicit enum Foo4 {} // error: only access modifiers allowed
55
lazy enum Foo5 {} // error: only access modifiers allowed
66
erased enum Foo6 {} // error: only access modifiers allowed
77
override enum Foo7 {} // error: only access modifiers allowed
8+
inline enum Foo8 {} // error: only access modifiers allowed
9+
opaque enum Foo9 {} // error: only access modifiers allowed
810

9-
enum Foo7 {
10-
abstract case C1() // error: no modifier allowed
11-
final case C2() // error: no modifier allowed
12-
sealed case C3() // error: no modifier allowed
13-
implicit case C4() // error: no modifier allowed
14-
lazy case C5() // error: no modifier allowed
15-
erased case C6() // error: no modifier allowed
16-
override case C7() // error: no modifier allowed
17-
private case C8() // error: no modifier allowed
18-
protected case C9() // error: no modifier allowed
11+
enum Foo9 {
12+
abstract case C1() // error: no modifier allowed
13+
final case C2() // error: no modifier allowed
14+
sealed case C3() // error: no modifier allowed
15+
implicit case C4() // error: no modifier allowed
16+
lazy case C5() // error: no modifier allowed
17+
erased case C6() // error: no modifier allowed
18+
override case C7() // error: no modifier allowed
19+
private case C8() // error: no modifier allowed
20+
protected case C9() // error: no modifier allowed
21+
inline case C10() // error: no modifier allowed
22+
opaque case C11() // error: no modifier allowed
1923
}
2024

21-
enum Foo8 {
22-
abstract case C1 // error: no modifier allowed
23-
final case C2 // error: no modifier allowed
24-
sealed case C3 // error: no modifier allowed
25-
implicit case C4 // error: no modifier allowed
26-
lazy case C5 // error: no modifier allowed
27-
erased case C6 // error: no modifier allowed
28-
override case C7 // error: no modifier allowed
29-
private case C8 // error: no modifier allowed
30-
protected case C9 // error: no modifier allowed
25+
enum Foo10 {
26+
abstract case C1 // error: no modifier allowed
27+
final case C2 // error: no modifier allowed
28+
sealed case C3 // error: no modifier allowed
29+
implicit case C4 // error: no modifier allowed
30+
lazy case C5 // error: no modifier allowed
31+
erased case C6 // error: no modifier allowed
32+
override case C7 // error: no modifier allowed
33+
private case C8 // error: no modifier allowed
34+
protected case C9 // error: no modifier allowed
35+
inline case C10 // error: no modifier allowed
36+
opaque case C11 // error: no modifier allowed
3137
}

0 commit comments

Comments
 (0)