summaryrefslogtreecommitdiff
path: root/test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2014-08-25 23:13:05 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2014-09-10 00:05:03 +0200
commit44b5c261a8e585c5747380895aa06c84f9d63f6c (patch)
treebebacf259c0d62d4b9298b4892cc5c2c309cc857 /test/junit/scala/tools/nsc/backend/jvm/CodeGenTools.scala
parentd3cfbb1db68dab3308edfa66bbdb497c5d3f0cb2 (diff)
downloadscala-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.scala27
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
+ }
+}