diff options
-rw-r--r-- | sources/scalac/transformer/matching/Autom2Scala.java | 5 | ||||
-rw-r--r-- | sources/scalac/transformer/matching/TestRegTraverser.java | 16 |
2 files changed, 8 insertions, 13 deletions
diff --git a/sources/scalac/transformer/matching/Autom2Scala.java b/sources/scalac/transformer/matching/Autom2Scala.java index a9c6af5cdb..c61a8cf420 100644 --- a/sources/scalac/transformer/matching/Autom2Scala.java +++ b/sources/scalac/transformer/matching/Autom2Scala.java @@ -187,10 +187,7 @@ public class Autom2Scala { /** some error happened which is due to bug in translation/automaton */ final Tree code_error() { - return gen.mkBlock( - gen.Console_print( pos, "System error during pattern matching. Please file bug report\n"), - cf.ThrowMatchError( pos, funRetType() ) - ); + return cf.ThrowMatchError( pos, funRetType() ); } Tree code_fail() { diff --git a/sources/scalac/transformer/matching/TestRegTraverser.java b/sources/scalac/transformer/matching/TestRegTraverser.java index e6d606e8c9..27c1f0a034 100644 --- a/sources/scalac/transformer/matching/TestRegTraverser.java +++ b/sources/scalac/transformer/matching/TestRegTraverser.java @@ -27,7 +27,10 @@ public class TestRegTraverser extends Traverser { case Alternative(_): result = true; break; - case Bind(_, Tree pat): + case Bind(Name n, Tree pat): + if( TreeInfo.isNameOfStarPattern( n ) ) { + result = true; + } if( TreeInfo.isEmptySequence( pat ) ) { // annoying special case: b@() [or b@(()|()) after normalization] //System.err.println("bindin empty "+tree.symbol()); @@ -67,17 +70,12 @@ public class TestRegTraverser extends Traverser { case Sequence( Tree[] trees3 ): result = true; break; - default: - super.traverse( tree ); - }; + } //System.out.println( fn ); //System.out.println( tree.type() ); - } else if( trees.length > 0 ) - super.traverse( tree ); - break; - default: - super.traverse( tree ); + } } + if( !result ) super.traverse( tree ); break; default: super.traverse( tree ); |