diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2016-10-05 18:01:29 +0200 |
---|---|---|
committer | Guillaume Martres <smarter@ubuntu.com> | 2016-10-05 18:02:12 +0200 |
commit | e0a14e7939eda6a7f4914831975b2ac8877696f2 (patch) | |
tree | 5e93d7743855e8c93697cdf5f460ffa99692aa5c /test/test/InlineBytecodeTests.scala | |
parent | 215b97c22bd85fb807896fc03ffaab22c0748414 (diff) | |
download | dotty-e0a14e7939eda6a7f4914831975b2ac8877696f2.tar.gz dotty-e0a14e7939eda6a7f4914831975b2ac8877696f2.tar.bz2 dotty-e0a14e7939eda6a7f4914831975b2ac8877696f2.zip |
Add InlineBytecodeTests to check that inline really works
Diffstat (limited to 'test/test/InlineBytecodeTests.scala')
-rw-r--r-- | test/test/InlineBytecodeTests.scala | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/test/InlineBytecodeTests.scala b/test/test/InlineBytecodeTests.scala new file mode 100644 index 000000000..f7dc35305 --- /dev/null +++ b/test/test/InlineBytecodeTests.scala @@ -0,0 +1,32 @@ +package test + +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)) + } + } +} |