summaryrefslogtreecommitdiff
path: root/test/junit
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2015-11-06 17:10:24 +0100
committerLukas Rytz <lukas.rytz@gmail.com>2016-01-25 10:36:12 +0100
commita8d97403928983f72db66c6dab1354e7c89fe343 (patch)
tree7dc83cbc6d6cb4e8ec38ca4df094f10127d4469e /test/junit
parent3dccf0ee22303e1c192ed3e40391df48d811f3f6 (diff)
downloadscala-a8d97403928983f72db66c6dab1354e7c89fe343.tar.gz
scala-a8d97403928983f72db66c6dab1354e7c89fe343.tar.bz2
scala-a8d97403928983f72db66c6dab1354e7c89fe343.zip
Rewrite test for SI-6956
Diffstat (limited to 'test/junit')
-rw-r--r--test/junit/scala/tools/nsc/transform/patmat/PatmatBytecodeTest.scala58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/junit/scala/tools/nsc/transform/patmat/PatmatBytecodeTest.scala b/test/junit/scala/tools/nsc/transform/patmat/PatmatBytecodeTest.scala
new file mode 100644
index 0000000000..554e8c0150
--- /dev/null
+++ b/test/junit/scala/tools/nsc/transform/patmat/PatmatBytecodeTest.scala
@@ -0,0 +1,58 @@
+package scala.tools.nsc
+package transform.patmat
+
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.Test
+import scala.tools.asm.Opcodes._
+import org.junit.Assert._
+
+import scala.tools.nsc.backend.jvm.AsmUtils._
+import scala.tools.nsc.backend.jvm.CodeGenTools
+import scala.tools.testing.AssertUtil._
+
+import CodeGenTools._
+import scala.tools.partest.ASMConverters
+import ASMConverters._
+import scala.tools.testing.ClearAfterClass
+
+object PatmatBytecodeTest extends ClearAfterClass.Clearable {
+ var compiler = newCompiler()
+ var optCompiler = newCompiler(extraArgs = "-Yopt:l:method")
+ def clear(): Unit = { compiler = null; optCompiler = null }
+}
+
+@RunWith(classOf[JUnit4])
+class PatmatBytecodeTest extends ClearAfterClass {
+ ClearAfterClass.stateToClear = PatmatBytecodeTest
+
+ val compiler = PatmatBytecodeTest.compiler
+ val optCompiler = PatmatBytecodeTest.optCompiler
+
+ @Test
+ def t6956(): Unit = {
+ val code =
+ """class C {
+ | private[this] final val ONE = 1
+ |
+ | def s1(i: Byte): Int = i match {
+ | case ONE => 1
+ | case 2 => 2
+ | case 3 => 3
+ | case _ => 0
+ | }
+ |
+ | def s2(i: Byte): Int = i match {
+ | case 1 => 1
+ | case 2 => 2
+ | case 3 => 3
+ | case _ => 0
+ | }
+ |}
+ """.stripMargin
+
+ val List(c) = compileClasses(compiler)(code)
+ assert(getSingleMethod(c, "s1").instructions.count(_.opcode == TABLESWITCH) == 1, textify(c))
+ assert(getSingleMethod(c, "s2").instructions.count(_.opcode == TABLESWITCH) == 1, textify(c))
+ }
+}