diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2013-02-26 00:06:14 -0800 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2013-02-26 00:06:14 -0800 |
commit | a340dd61c7320754bf4c12535c5daccbdea9492c (patch) | |
tree | 57c23a178881adc61362eb53379b262b09450197 /test/files | |
parent | f2be783020a1c8e05ebcae3717740632b41d1751 (diff) | |
parent | 4f2d784a09e5df244ebbee33d23cf931fcacb740 (diff) | |
download | scala-a340dd61c7320754bf4c12535c5daccbdea9492c.tar.gz scala-a340dd61c7320754bf4c12535c5daccbdea9492c.tar.bz2 scala-a340dd61c7320754bf4c12535c5daccbdea9492c.zip |
Merge pull request #2158 from JamesIry/master_7006
SI-7006 Eliminate NOPs and unreachable code
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/jvm/t7006/Foo_1.flags | 1 | ||||
-rw-r--r-- | test/files/jvm/t7006/Foo_1.scala | 10 | ||||
-rw-r--r-- | test/files/jvm/t7006/Test.scala | 19 | ||||
-rw-r--r-- | test/files/run/t6102.flags | 2 |
4 files changed, 31 insertions, 1 deletions
diff --git a/test/files/jvm/t7006/Foo_1.flags b/test/files/jvm/t7006/Foo_1.flags new file mode 100644 index 0000000000..72fe7b1aa0 --- /dev/null +++ b/test/files/jvm/t7006/Foo_1.flags @@ -0,0 +1 @@ + -Ydead-code -Ydebug -Xfatal-warnings diff --git a/test/files/jvm/t7006/Foo_1.scala b/test/files/jvm/t7006/Foo_1.scala new file mode 100644 index 0000000000..995619ce6b --- /dev/null +++ b/test/files/jvm/t7006/Foo_1.scala @@ -0,0 +1,10 @@ +class Foo_1 { + def foo { + try { + val x = 3 // this will be optimized away, leaving a useless jump only block + } finally { + print("hello") + } + while(true){} // ensure infinite loop doesn't break the algoirthm + } +} diff --git a/test/files/jvm/t7006/Test.scala b/test/files/jvm/t7006/Test.scala new file mode 100644 index 0000000000..065a23510e --- /dev/null +++ b/test/files/jvm/t7006/Test.scala @@ -0,0 +1,19 @@ +import scala.tools.partest.BytecodeTest +import scala.tools.asm +import asm.tree.InsnList +import scala.collection.JavaConverters._ + +object Test extends BytecodeTest { + def show: Unit = { + val classNode = loadClassNode("Foo_1") + val methodNode = getMethod(classNode, "foo") + assert(count(methodNode.instructions, asm.Opcodes.NOP) == 0) + assert(count(methodNode.instructions, asm.Opcodes.GOTO) == 1) + } + + def count(insnList: InsnList, opcode: Int): Int = { + def isNop(node: asm.tree.AbstractInsnNode): Boolean = + (node.getOpcode == opcode) + insnList.iterator.asScala.count(isNop) + } +} diff --git a/test/files/run/t6102.flags b/test/files/run/t6102.flags index e35535c8ea..72fe7b1aa0 100644 --- a/test/files/run/t6102.flags +++ b/test/files/run/t6102.flags @@ -1 +1 @@ - -Ydead-code + -Ydead-code -Ydebug -Xfatal-warnings |