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 29, 2024
1 parent b29bae5 commit 7d2e869
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 7d2e869

Please sign in to comment.