diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-01-19 11:57:52 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-01-19 11:57:52 +0100 |
commit | cbd0205999d19e378f9f7ac8ca685a134862cf47 (patch) | |
tree | c2b573a3f637da29b55161a55534205827340437 /test/files/run | |
parent | 766bb97114b5932b75340a9169558de61899997e (diff) | |
download | scala-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')
-rw-r--r-- | test/files/run/t6011c.scala | 13 |
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 + } +} |