Closed
Description
Compiler version
This code breaks compilation on 3.5.0-RC2 but works on 3.4.2
Minimized code
type Init[Coll[_], A, T <: Tuple] = T match
case EmptyTuple => A
case head *: rest => InitCons[Coll, A, head, rest]
type InitCons[Coll[_], A, H, Rest <: Tuple] = H match
case Int => Init[Coll, Coll[A], Rest]
case _ => Unit
def fillVector[A, T <: Tuple](dims: T)(x: => A): Init[Vector, A, T] =
dims match
case _: EmptyTuple => x
case (p : (head *: rest)) =>
val (head *: rest) = p
head match
case size: Int => fillVector(rest)(Vector.fill(size)(x))
case _ => ()
Output
Recursion limit exceeded
If that's not the case, you could also try to increase the stacksize using the -Xss JVM option.
For the unprocessed stack trace, compile with -Xno-decode-stacktraces.
A recurring operation is (inner to outer):
subtype Vector[A] <:< Vector[Vector[A]]
subtype Vector[Vector[A]] <:< Vector[Vector[Vector[A]]]
subtype Vector[Vector[Vector[A]]] <:< Vector[Vector[Vector[Vector[A]]]]
subtype Vector[Vector[Vector[Vector[A]]]] <:< Vector[Vector[Vector[Vector[Vector[A]]]]]
subtype Vector[Vector[Vector[Vector[Vector[A]]]]] <:< Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]]
subtype Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]] <:< Vector[Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]]]
subtype Vector[Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]]] <:< Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]]]]
subtype Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]]]] <:< Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]]]]]
subtype Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]]]]] <:< Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[Vector[A]]]]]]]]]