You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Skip splice level checking for <refinement> symbols (#22782)
This is safe to skip because <refinement> symbols can only be a part of
type refinement self referencing prefix, where it is impossible to
splice anything.
For some context, this is how the test case looks in typer:
```scala
{
final class $anon() extends AnyRef() {
type T = Unit
def make: T = ()
def take(t: T): Unit = ()
}
new $anon():
{z1 => Object{type T; def make: z1.T; def take(t: z1.T): Unit}}
}:
Object
{
type T >: Nothing <: Any
def make: <refinement>.this.T
def take(t: <refinement>.this.T): Unit
}
```
The compiler sometimes instead of creating a recursive type directly
(`{z1 => ...}`), creates <refinement> symbols which reference an
enclosing refinement, replacing those with recursive types later.
Fixes#22648
0 commit comments