Skip to content

Commit

Permalink
Handle old given syntax where identifier and type are seperated by ne…
Browse files Browse the repository at this point in the history
…w line (#21957)

Fixes #21768 

Fixes usages of `with {...}` and `= new {}` declarations presented in
tests.
  • Loading branch information
WojciechMazur authored Nov 18, 2024
1 parent 2a62152 commit 7644ecd
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
12 changes: 12 additions & 0 deletions compiler/src/dotty/tools/dotc/parsing/Parsers.scala
Original file line number Diff line number Diff line change
Expand Up @@ -1017,6 +1017,18 @@ object Parsers {
// def f = ...
lookahead.nextToken()
!lookahead.isAfterLineEnd
} || {
// Support for for pre-3.6 syntax where type is put on the next line
// Examples:
// given namedGiven:
// X[T] with {}
// given otherGiven:
// X[T] = new X[T]{}
lookahead.isIdent && {
lookahead.nextToken()
skipParams()
lookahead.token == WITH || lookahead.token == EQUALS
}
}
}

Expand Down
12 changes: 12 additions & 0 deletions tests/pos/i21768.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

trait Foo[T]:
def foo(v: T): Unit

given myFooOfInt:
Foo[Int] with
def foo(v: Int): Unit = ???

given myFooOfLong:
Foo[Long] = new Foo[Long] {
def foo(v: Long): Unit = ???
}

0 comments on commit 7644ecd

Please sign in to comment.