summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2008-04-09 10:20:04 +0000
committerBurak Emir <emir@epfl.ch>2008-04-09 10:20:04 +0000
commited01acd9713e834142e17b68e4ab05fc2bcd347c (patch)
tree80b120ffad666ad540d4e51bfdb02610bde65f8c /src
parentd85738f9e351b1a262e07461ff7b3473d8253855 (diff)
downloadscala-ed01acd9713e834142e17b68e4ab05fc2bcd347c.tar.gz
scala-ed01acd9713e834142e17b68e4ab05fc2bcd347c.tar.bz2
scala-ed01acd9713e834142e17b68e4ab05fc2bcd347c.zip
fixed 495 again (this fix no longer ignores gua...
fixed 495 again (this fix no longer ignores guards), with test
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/matching/ParallelMatching.scala14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
index a1a9848f1e..44b5d7102a 100644
--- a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
+++ b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
@@ -333,16 +333,20 @@ trait ParallelMatching {
/*block*/{
var xs = column
var i = 0;
-// var last = -1;
+ var last = -1;
while(xs ne Nil) { // forall
-// if (last != -1) {
-// cunit.error(xs.head.pos, "unreachable code")
-// }
+ if (last != -1) {
+ cunit.error(xs.head.pos, "unreachable code")
+ }
strip(xs.head) match {
case (pvars, p @ Literal(Constant(c:Int))) => sanity(p.pos, c , definedVars(xs.head)); insertTagIndexPair(c,i)
case (pvars, p @ Literal(Constant(c:Char))) => sanity(p.pos, c.toInt, definedVars(xs.head)); insertTagIndexPair(c.toInt,i)
case (pvars, p ) if isDefaultPattern(p) => insertDefault(i,pvars)
-// case (pvars, p ) if isDefaultPattern(p) => last = i; insertDefault(i,pvars)
+ case (pvars, p ) if isDefaultPattern(p) =>
+ if (rest.row(i).guard == EmptyTree) {
+ last = i;
+ }
+ insertDefault(i,pvars)
}
i += 1
xs = xs.tail