blob: 4e70b7e814a4c502900c794decc7ff70cb61125f (
plain) (
tree)
|
|
object Expected extends Exception
object Test {
def throwExpected: Nothing = throw Expected
def foo0(a: Array[Double]) = { // does compile for Int instead of Double
val v = 42
a(0) = throwExpected // was crash in code gen: java.lang.NegativeArraySizeException
}
def foo1(a: Array[Double]) = { // does compile for Int instead of Double
a(0) = throwExpected // was VerifyError at runtime
}
def foo2(a: Array[Int]) = { // does compile for Int instead of Double
a(0) = throwExpected // was VerifyError at runtime
}
def foo3(a: Array[String]) = { // does compile for Int instead of Double
a(0) = throwExpected // was already working
}
def main(args: Array[String]): Unit = {
check(foo0(new Array[Double](1)))
check(foo1(new Array[Double](1)))
check(foo2(new Array[Int](1)))
check(foo3(new Array[String](1)))
}
def check(f: => Any) {
try {f ; sys.error("no exception thrown")
} catch {
case Expected =>
}
}
}
|