diff options
author | Paul Phillips <paulp@improving.org> | 2011-10-13 20:50:58 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-10-13 20:50:58 +0000 |
commit | e3b58d0c993aa4be16214ce52aea5952a9e5f877 (patch) | |
tree | aa33db4d4e14ce05867f7654eca0ca5d77cb12d7 | |
parent | 4f5159f0ed90598d1e5553afcce7ef2d1ff59d51 (diff) | |
download | scala-e3b58d0c993aa4be16214ce52aea5952a9e5f877.tar.gz scala-e3b58d0c993aa4be16214ce52aea5952a9e5f877.tar.bz2 scala-e3b58d0c993aa4be16214ce52aea5952a9e5f877.zip |
Adjustment to @switch.
Don't require a tableswitch if the matcher elected not to emit one
because there were so few cases. No review.
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala | 4 | ||||
-rw-r--r-- | test/files/pos/switch-small.scala | 8 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala index 809dbe7695..c25f33393a 100644 --- a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala +++ b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala @@ -407,7 +407,9 @@ abstract class ExplicitOuter extends InfoTransform if (unchecked) nselector = nselector1 - (!unchecked, isSwitchAnnotation(tpt.tpe)) + // Don't require a tableswitch if there are 1-2 casedefs + // since the matcher intentionally emits an if-then-else. + (!unchecked, isSwitchAnnotation(tpt.tpe) && ncases.size > 2) case _ => (true, false) } diff --git a/test/files/pos/switch-small.scala b/test/files/pos/switch-small.scala new file mode 100644 index 0000000000..9de9ca028e --- /dev/null +++ b/test/files/pos/switch-small.scala @@ -0,0 +1,8 @@ +import annotation._ + +object Test { + def f(x: Int) = (x: @switch) match { + case 1 => 1 + case _ => 2 + } +} |