diff options
-rw-r--r-- | sources/scalac/transformer/matching/PatternMatcher.java | 2 | ||||
-rw-r--r-- | sources/scalac/transformer/matching/TestRegTraverser.java | 18 |
2 files changed, 13 insertions, 7 deletions
diff --git a/sources/scalac/transformer/matching/PatternMatcher.java b/sources/scalac/transformer/matching/PatternMatcher.java index b33036abfc..557c9c8a67 100644 --- a/sources/scalac/transformer/matching/PatternMatcher.java +++ b/sources/scalac/transformer/matching/PatternMatcher.java @@ -317,7 +317,7 @@ public class PatternMatcher extends PatternTool { assert false; // this may not happen ?? ----------------- Burak return mk.ConstrPat(tree.pos, tree.type); } else if (name.isVariable()) {// should be Bind ------------ Burak - assert false; + assert false : "encountered ident:"+name; if (env != null) env.newBoundVar(tree.symbol(), tree.type, diff --git a/sources/scalac/transformer/matching/TestRegTraverser.java b/sources/scalac/transformer/matching/TestRegTraverser.java index fec6b3c0b4..e6d606e8c9 100644 --- a/sources/scalac/transformer/matching/TestRegTraverser.java +++ b/sources/scalac/transformer/matching/TestRegTraverser.java @@ -21,6 +21,7 @@ public class TestRegTraverser extends Traverser { static Set nilVariables = new HashSet(); public void traverse(Tree tree) { + //System.out.println("traverse:"+tree); if (!result) switch (tree) { case Alternative(_): @@ -57,21 +58,26 @@ public class TestRegTraverser extends Traverser { // Matthias PatternMatcher cannot handle this case case Apply( Tree fn, Tree[] trees ): - if( trees.length == 1 ) { + if( trees.length == 1 ) switch (trees[ 0 ]) { + case Sequence( Tree[] trees2 ): if( trees2.length == 1 ) { switch (trees2[ 0 ]) { - case Sequence( _ ): + 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 ); } - } - super.traverse( tree ); break; default: super.traverse( tree ); @@ -82,7 +88,7 @@ public class TestRegTraverser extends Traverser { TestRegTraverser trt = new TestRegTraverser(); nilVariables.clear(); trt.traverse(t); - //System.err.println("TestRegTraverser says "+t+" -> "+trt.result); + //System.out.println("TestRegTraverser says "+t+" -> "+trt.result); return trt.result; } |