diff options
Diffstat (limited to 'test/files/run/t10069.scala')
-rw-r--r-- | test/files/run/t10069.scala | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/files/run/t10069.scala b/test/files/run/t10069.scala new file mode 100644 index 0000000000..4e70b7e814 --- /dev/null +++ b/test/files/run/t10069.scala @@ -0,0 +1,34 @@ +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 => + } + } +} |