summaryrefslogtreecommitdiff
path: root/test/files/run/t6011c.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-01-19 11:57:52 +0100
committerJason Zaugg <jzaugg@gmail.com>2013-01-19 11:57:52 +0100
commitcbd0205999d19e378f9f7ac8ca685a134862cf47 (patch)
treec2b573a3f637da29b55161a55534205827340437 /test/files/run/t6011c.scala
parent766bb97114b5932b75340a9169558de61899997e (diff)
downloadscala-cbd0205999d19e378f9f7ac8ca685a134862cf47.tar.gz
scala-cbd0205999d19e378f9f7ac8ca685a134862cf47.tar.bz2
scala-cbd0205999d19e378f9f7ac8ca685a134862cf47.zip
SI-6902 Check unreachability under @unchecked
Only exhaustiveness checking should be disabled if the scrutinee of a match as annotated as `: @unchecked`. This was the pre-2.10.x behaviour. This also fixes a variation of the closed ticket, SI-6011. The exhaustiveness check is needed to safely fallback from emitting a table switch if duplicate cases are detected.
Diffstat (limited to 'test/files/run/t6011c.scala')
-rw-r--r--test/files/run/t6011c.scala13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/files/run/t6011c.scala b/test/files/run/t6011c.scala
new file mode 100644
index 0000000000..0647e3f81a
--- /dev/null
+++ b/test/files/run/t6011c.scala
@@ -0,0 +1,13 @@
+object Test extends App {
+ // A variation of SI-6011, which eluded the fix
+ // in 2.10.0.
+ //
+ // duplicate keys in SWITCH, can't pick arbitrarily one of them to evict, see SI-6011.
+ // at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:50)
+ // at scala.tools.nsc.Global.abort(Global.scala:249)
+ // at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder$jcode$.emitSWITCH(GenASM.scala:1850)
+ ((1: Byte): @unchecked @annotation.switch) match {
+ case 1 => 2
+ case 1 => 3 // crash
+ }
+}