diff options
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scala/tools/scalac/transformer/TransMatch.scala | 2 | ||||
-rw-r--r-- | sources/scalac/transformer/matching/PatternMatcher.java | 12 |
2 files changed, 10 insertions, 4 deletions
diff --git a/sources/scala/tools/scalac/transformer/TransMatch.scala b/sources/scala/tools/scalac/transformer/TransMatch.scala index 7826907748..9b90de9642 100644 --- a/sources/scala/tools/scalac/transformer/TransMatch.scala +++ b/sources/scala/tools/scalac/transformer/TransMatch.scala @@ -60,7 +60,7 @@ class TransMatch( global:scalac_Global ) ( trees.length == 0 ) || isRegular( trees ); case Tree$Apply( fn, trees ) => isRegular( trees ) && - !((trees.length == 1) && TreeInfo.isEmptySequence( trees( 0 ))) + !((trees.length == 1) && TreeInfo.isEmptySequence( trees( 0 ))) case Tree$Literal(_) => false; case Tree$Select(_,_) => false; case Tree$Typed(_,_) => false; diff --git a/sources/scalac/transformer/matching/PatternMatcher.java b/sources/scalac/transformer/matching/PatternMatcher.java index 557c9c8a67..f5a0eda18f 100644 --- a/sources/scalac/transformer/matching/PatternMatcher.java +++ b/sources/scalac/transformer/matching/PatternMatcher.java @@ -242,11 +242,17 @@ public class PatternMatcher extends PatternTool { } protected boolean isSeqApply( Tree.Apply tree ) { - return (tree.args.length == 1 && - (tree.type.symbol().flags & Modifiers.CASE) == 0); + if(( tree.args.length == 1 ) && (tree.type.symbol().flags & Modifiers.CASE) == 0) + switch (tree.args[0]) { + case Sequence( _ ): + return true; + default: + return false; + } + return false; } - protected PatternNode patternNode(Tree tree, Header header, CaseEnv env) { + protected PatternNode patternNode(Tree tree, Header header, CaseEnv env) { //System.out.println("patternNode("+tree+","+header+")"); switch (tree) { case Bind(Name name, |