Closed CyrilFMoser closed 2 months ago
Crashes
I wasn't able to reproduce the crash. Assuming this to just be a reporting issue.
Ah, right. There's no crash, but the code fails by throwing an exception at runtime when run as a script.
// repro-script.sc
sealed trait T_A
sealed trait T_B[A, B]
case class CC_A[A, C, D](a: T_B[C, D]) extends T_B[A, T_B[C, D]]
case class CC_B() extends T_A
case class CC_C[A, B]() extends T_A
case class CC_D[C, D](b: T_B[C, D], c: T_A)
extends T_B[CC_A[Int, Byte, Int], T_B[C, D]]
val v_a: T_B[CC_A[Int, Byte, Int], T_B[Char, Char]] = CC_D(null, CC_B())
val v_b: Int = v_a match {
case CC_A(_) => 0
case CC_D(_, CC_C()) => 1
}
scala-cli run repro-script.sc
Compiling project (Scala 3.4.2, JVM (17))
Compiled project (Scala 3.4.2, JVM (17))
Exception in thread "main" scala.MatchError: CC_D(null,CC_B()) (of class repro$minusscript$_$CC_D)
at repro$minusscript$_.<init>(repro-script.sc:13)
at repro$minusscript_sc$.script$lzyINIT1(repro-script.sc:29)
at repro$minusscript_sc$.script(repro-script.sc:29)
at repro$minusscript_sc$.main(repro-script.sc:33)
at repro$minusscript_sc.main(repro-script.sc)
Very similar issues which were reported together with this, potentially duplicates:
Compiler version
3.4.1
Minimized code
Output
~Crashes~ error at runtime
Expectation
Should give a warning at compile time that the pattern match is not exhaustive.