aboutsummaryrefslogtreecommitdiff
path: root/compiler/test/dotty/tools/backend/jvm/InlineBytecodeTests.scala
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/test/dotty/tools/backend/jvm/InlineBytecodeTests.scala')
-rw-r--r--compiler/test/dotty/tools/backend/jvm/InlineBytecodeTests.scala32
1 files changed, 32 insertions, 0 deletions
diff --git a/compiler/test/dotty/tools/backend/jvm/InlineBytecodeTests.scala b/compiler/test/dotty/tools/backend/jvm/InlineBytecodeTests.scala
new file mode 100644
index 000000000..033783303
--- /dev/null
+++ b/compiler/test/dotty/tools/backend/jvm/InlineBytecodeTests.scala
@@ -0,0 +1,32 @@
+package dotty.tools.backend.jvm
+
+import org.junit.Assert._
+import org.junit.Test
+
+class InlineBytecodeTests extends DottyBytecodeTest {
+ import ASMConverters._
+ @Test def inlineUnit = {
+ val source = """
+ |class Foo {
+ | inline def foo: Int = 1
+ |
+ | def meth1: Unit = foo
+ | def meth2: Unit = 1
+ |}
+ """.stripMargin
+
+ checkBCode(source) { dir =>
+ val clsIn = dir.lookupName("Foo.class", directory = false).input
+ val clsNode = loadClassNode(clsIn)
+ val meth1 = getMethod(clsNode, "meth1")
+ val meth2 = getMethod(clsNode, "meth2")
+
+ val instructions1 = instructionsFromMethod(meth1)
+ val instructions2 = instructionsFromMethod(meth2)
+
+ assert(instructions1 == instructions2,
+ "`foo` was not properly inlined in `meth1`\n" +
+ diffInstructions(instructions1, instructions2))
+ }
+ }
+}