File tree 2 files changed +30
-9
lines changed
compiler/src/dotty/tools/dotc/parsing 2 files changed +30
-9
lines changed Original file line number Diff line number Diff line change @@ -2338,20 +2338,24 @@ object Parsers {
2338
2338
(ofClass || ofInstance) && {
2339
2339
val lookahead = in.lookaheadScanner // skips newline on startup
2340
2340
lookahead.nextToken() // skip the `given`
2341
- if (lookahead.token == IDENTIFIER || lookahead.token == BACKQUOTED_IDENT ) {
2342
- lookahead.nextToken()
2343
- if (lookahead.token == LBRACKET ) {
2341
+ if (lookahead.token == LBRACKET ) true
2342
+ else {
2343
+ if (lookahead.token == IDENTIFIER && lookahead.name != nme.as ||
2344
+ lookahead.token == BACKQUOTED_IDENT ) {
2344
2345
lookahead.nextToken()
2345
- var openBrackets = 1
2346
- while (openBrackets > 0 && lookahead.token != EOF ) {
2347
- if (lookahead.token == LBRACKET ) openBrackets += 1
2348
- else if (lookahead.token == RBRACKET ) openBrackets -= 1
2346
+ if (lookahead.token == LBRACKET ) {
2349
2347
lookahead.nextToken()
2348
+ var openBrackets = 1
2349
+ while (openBrackets > 0 && lookahead.token != EOF ) {
2350
+ if (lookahead.token == LBRACKET ) openBrackets += 1
2351
+ else if (lookahead.token == RBRACKET ) openBrackets -= 1
2352
+ lookahead.nextToken()
2353
+ }
2350
2354
}
2351
2355
}
2356
+ lookahead.token == FOR ||
2357
+ lookahead.token == IDENTIFIER && lookahead.name == nme.as
2352
2358
}
2353
- lookahead.token == FOR ||
2354
- lookahead.token == IDENTIFIER && lookahead.name == nme.as
2355
2359
}
2356
2360
2357
2361
def recur (firstClause : Boolean , nparams : Int , contextualOnly : Boolean ): List [List [ValDef ]] = {
Original file line number Diff line number Diff line change
1
+ class A
2
+ class B
3
+
4
+ given as A
5
+ given as B
6
+
7
+ trait Foo
8
+ trait Bar
9
+
10
+ given as Foo
11
+ given as Bar
12
+
13
+ trait C
14
+ trait Baz [A ]
15
+
16
+ given as C
17
+ given [A ] as Baz [A ]
You can’t perform that action at this time.
0 commit comments