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 (scala#21957)

Fixes scala#21768 

Fixes usages of `with {...}` and `= new {}` declarations presented in
tests.
  • Loading branch information
WojciechMazur authored and KacperFKorban committed Nov 20, 2024
1 parent 6c8638d commit 69b3431
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 69b3431

Please sign in to comment.