-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Description
The following snippet is a variant of that causing #2771:
trait A { type L[G[F[_],_],H[F[_],_]] }
trait B { type L[F[_],_] }
trait C { type M <: A }
trait D { type M >: B }
object Test {
def test(x: C with D): Unit = {
def foo(a: A, b: B)(z: a.L[b.L,b.L]) = z
def bar(y: x.M, b: B) = foo(y, b)
def baz(b: B) = bar(b, b)
baz(new B { type L[F[_],X] = F[X] })(1)
}
}
The underlying issue is likely the same, though the error message is different:
exception occurred while compiling Test.scala
Exception in thread "main" java.lang.IndexOutOfBoundsException: 1
at scala.collection.LinearSeqOptimized$class.apply(LinearSeqOptimized.scala:65)
at scala.collection.immutable.List.apply(List.scala:84)
at dotty.tools.dotc.core.Substituters$class.substParams(Substituters.scala:220)
...
The error disappears when the last line (the call to baz
) is commented out. See #2771 for a more in-depth discussion.