File tree Expand file tree Collapse file tree 2 files changed +30
-9
lines changed
compiler/src/dotty/tools/dotc/parsing Expand file tree Collapse file tree 2 files changed +30
-9
lines changed Original file line number Diff line number Diff line change @@ -2338,20 +2338,24 @@ object Parsers {
23382338 (ofClass || ofInstance) && {
23392339 val lookahead = in.lookaheadScanner // skips newline on startup
23402340 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 ) {
23442345 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 ) {
23492347 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+ }
23502354 }
23512355 }
2356+ lookahead.token == FOR ||
2357+ lookahead.token == IDENTIFIER && lookahead.name == nme.as
23522358 }
2353- lookahead.token == FOR ||
2354- lookahead.token == IDENTIFIER && lookahead.name == nme.as
23552359 }
23562360
23572361 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