From 8475807f540a698c8456bc113b9c5b9186ee2cf5 Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Thu, 10 Jan 2013 14:43:00 -0800 Subject: SI-6955 switch emission no longer foiled by type alias dealias the type of the scrutinee before checking it's switchable now with tests! (using IcodeTest since javap is not available everywhere) --- test/files/run/t6955.check | 1 + test/files/run/t6955.scala | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 test/files/run/t6955.check create mode 100644 test/files/run/t6955.scala (limited to 'test') diff --git a/test/files/run/t6955.check b/test/files/run/t6955.check new file mode 100644 index 0000000000..0cfbf08886 --- /dev/null +++ b/test/files/run/t6955.check @@ -0,0 +1 @@ +2 diff --git a/test/files/run/t6955.scala b/test/files/run/t6955.scala new file mode 100644 index 0000000000..2610acdec4 --- /dev/null +++ b/test/files/run/t6955.scala @@ -0,0 +1,26 @@ +import scala.tools.partest.IcodeTest + +class Switches { + type Tag = Byte + + def switchBad(i: Tag): Int = i match { // notice type of i is Tag = Byte + case 1 => 1 + case 2 => 2 + case 3 => 3 + case _ => 0 + } + + def switchOkay(i: Byte): Int = i match { // notice type of i is Byte + case 1 => 1 + case 2 => 2 + case 3 => 3 + case _ => 0 + } +} + +object Test extends IcodeTest { + // ensure we get two switches out of this -- ignore the rest of the output for robustness + // exclude the constant we emit for the "SWITCH ..." string below (we get the icode for all the code you see in this file) + override def show() = println(collectIcode("").filter(x => x.indexOf("SWITCH ...") >= 0 && x.indexOf("CONSTANT(") == -1).size) +} + -- cgit v1.2.3