summaryrefslogtreecommitdiff
path: root/test/junit
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-01-25 10:56:53 +0100
committerLukas Rytz <lukas.rytz@gmail.com>2016-01-25 11:28:57 +0100
commit9f7446450fec15d7563e5dcd0c12f56350951b7d (patch)
tree5bfc9caa961c95f0678e39897942c7cc061c5730 /test/junit
parent405ada956f6e8b4e765f0e56e61d9c954f868f18 (diff)
downloadscala-9f7446450fec15d7563e5dcd0c12f56350951b7d.tar.gz
scala-9f7446450fec15d7563e5dcd0c12f56350951b7d.tar.bz2
scala-9f7446450fec15d7563e5dcd0c12f56350951b7d.zip
Rewrite test for inlining from sealed class
Diffstat (limited to 'test/junit')
-rw-r--r--test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala2
-rw-r--r--test/junit/scala/tools/nsc/backend/jvm/opt/InlinerTest.scala28
2 files changed, 29 insertions, 1 deletions
diff --git a/test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala b/test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala
index 69c3f69380..342f403426 100644
--- a/test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala
+++ b/test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala
@@ -48,7 +48,7 @@ object CodeGenTools {
resetOutput(compiler)
compiler
}
-
+
def newCompilerWithoutVirtualOutdir(defaultArgs: String = "-usejavacp", extraArgs: String = ""): Global = {
val settings = new Settings()
val args = (CommandLineParser tokenize defaultArgs) ++ (CommandLineParser tokenize extraArgs)
diff --git a/test/junit/scala/tools/nsc/backend/jvm/opt/InlinerTest.scala b/test/junit/scala/tools/nsc/backend/jvm/opt/InlinerTest.scala
index 192a036d5b..77133255f4 100644
--- a/test/junit/scala/tools/nsc/backend/jvm/opt/InlinerTest.scala
+++ b/test/junit/scala/tools/nsc/backend/jvm/opt/InlinerTest.scala
@@ -1468,4 +1468,32 @@ class InlinerTest extends ClearAfterClass {
assertEquals(casts("t5"), Nil)
assertEquals(casts("t6"), Nil)
}
+
+ @Test
+ def inlineFromSealed(): Unit = {
+ val code =
+ """sealed abstract class Foo {
+ | @inline def bar(x: Int) = x + 1
+ |}
+ |object Foo {
+ | def mkFoo(): Foo = new Baz2
+ |}
+ |
+ |object Baz1 extends Foo
+ |final class Baz2 extends Foo
+ |
+ |object Test {
+ | def f = Foo.mkFoo() bar 10
+ |}
+ """.stripMargin
+
+ val cls = compile(code)
+ val test = cls.find(_.name == "Test$").get
+ assertEquals(
+ getSingleMethod(test, "f").instructions.summary,
+ List(GETSTATIC, "mkFoo",
+ BIPUSH, ISTORE,
+ IFNONNULL, ACONST_NULL, ATHROW, -1 /*label*/,
+ ILOAD, ICONST_1, IADD, IRETURN))
+ }
}