diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2014-08-25 23:13:05 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2014-09-10 00:05:03 +0200 |
commit | 44b5c261a8e585c5747380895aa06c84f9d63f6c (patch) | |
tree | bebacf259c0d62d4b9298b4892cc5c2c309cc857 /test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala | |
parent | d3cfbb1db68dab3308edfa66bbdb497c5d3f0cb2 (diff) | |
download | scala-44b5c261a8e585c5747380895aa06c84f9d63f6c.tar.gz scala-44b5c261a8e585c5747380895aa06c84f9d63f6c.tar.bz2 scala-44b5c261a8e585c5747380895aa06c84f9d63f6c.zip |
JUnit tests for dead code elimination.
JUnit tests may use tools from partest-extras (ASMConverters)
Diffstat (limited to 'test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala')
-rw-r--r-- | test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala b/test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala new file mode 100644 index 0000000000..256dff85c3 --- /dev/null +++ b/test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala @@ -0,0 +1,27 @@ +package scala.tools.nsc.backend.jvm + +import scala.tools.asm.Opcodes +import scala.tools.asm.tree.{AbstractInsnNode, LabelNode, ClassNode, MethodNode} +import scala.tools.partest.ASMConverters +import scala.collection.JavaConverters._ + +object CodeGenTools { + import ASMConverters._ + + def genMethod( flags: Int = Opcodes.ACC_PUBLIC, + name: String = "m", + descriptor: String = "()V", + genericSignature: String = null, + throwsExceptions: Array[String] = null)(body: Instruction*): MethodNode = { + val node = new MethodNode(flags, name, descriptor, genericSignature, throwsExceptions) + applyToMethod(node, body.toList) + node + } + + def wrapInClass(method: MethodNode): ClassNode = { + val cls = new ClassNode() + cls.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC, "C", null, "java/lang/Object", null) + cls.methods.add(method) + cls + } +} |