summaryrefslogtreecommitdiff
path: root/test/junit
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-02-15 21:58:22 +0100
committerLukas Rytz <lukas.rytz@gmail.com>2016-02-15 21:58:44 +0100
commitce3a8030fa59e5a9082528bf6f1ffc12a9277bc9 (patch)
tree28377cedd89b31d03c7d6132b5d8ec14580b4718 /test/junit
parentc524f18ee4959f6fe8297971fc882e63468c4317 (diff)
downloadscala-ce3a8030fa59e5a9082528bf6f1ffc12a9277bc9.tar.gz
scala-ce3a8030fa59e5a9082528bf6f1ffc12a9277bc9.tar.bz2
scala-ce3a8030fa59e5a9082528bf6f1ffc12a9277bc9.zip
Rewrite a few more tests to the new optimizer
Diffstat (limited to 'test/junit')
-rw-r--r--test/junit/scala/issues/OptimizedBytecodeTest.scala52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/junit/scala/issues/OptimizedBytecodeTest.scala b/test/junit/scala/issues/OptimizedBytecodeTest.scala
index 3c6f1ff25e..58ab6c2134 100644
--- a/test/junit/scala/issues/OptimizedBytecodeTest.scala
+++ b/test/junit/scala/issues/OptimizedBytecodeTest.scala
@@ -328,4 +328,56 @@ class OptimizedBytecodeTest extends ClearAfterClass {
assertInvoke(getSingleMethod(c, "f2a"), "C", "C$$$anonfun$3")
assertInvoke(getSingleMethod(c, "f2b"), "C", "wrapper2")
}
+
+ @Test
+ def t7060(): Unit = {
+ val code =
+ """class C {
+ | @inline final def mbarray_apply_minibox(array: Any, tag: Byte): Long =
+ | if (tag == 0) array.asInstanceOf[Array[Long]](0)
+ | else array.asInstanceOf[Array[Byte]](0).toLong
+ |
+ | def t = mbarray_apply_minibox(null, 0)
+ |}
+ """.stripMargin
+ val List(c) = compileClasses(compiler)(code)
+ assertNoInvoke(getSingleMethod(c, "t"))
+ }
+
+ @Test
+ def t8315(): Unit = {
+ val code =
+ """class C {
+ | def t(as: Listt): Unit = {
+ | map(as, (_: Any) => return)
+ | }
+ | final def map(x: Listt, f: Any => Any): Any = {
+ | if (x eq Nill) "" else f("")
+ | }
+ |}
+ |object Nill extends Listt
+ |class Listt
+ """.stripMargin
+ val List(c, nil, nilMod, listt) = compileClasses(compiler)(code)
+ assertInvoke(getSingleMethod(c, "t"), "C", "C$$$anonfun$1")
+ }
+
+ @Test
+ def t8315b(): Unit = {
+ val code =
+ """class C {
+ | def crash: Unit = {
+ | val key = ""
+ | try map(new F(key))
+ | catch { case _: Throwable => }
+ | }
+ | final def map(f: F): Any = f.apply("")
+ |}
+ |final class F(key: String) {
+ | final def apply(a: Any): Any = throw new RuntimeException(key)
+ |}
+ """.stripMargin
+ val List(c, f) = compileClasses(compiler)(code)
+ assertInvoke(getSingleMethod(c, "crash"), "C", "map")
+ }
}