summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/matching/ParallelMatching.scala6
-rw-r--r--src/compiler/scala/tools/nsc/matching/PatternMatchers.scala12
2 files changed, 11 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
index 55944c8c20..013db5fbf2 100644
--- a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
+++ b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
@@ -25,7 +25,10 @@ trait ParallelMatching {
def isCaseClass(tpe: Type) =
tpe match {
case TypeRef(_, sym, _) =>
- sym.hasFlag(symtab.Flags.CASE)
+ if(!sym.isAliasType)
+ sym.hasFlag(symtab.Flags.CASE)
+ else
+ tpe.normalize.typeSymbol.hasFlag(symtab.Flags.CASE)
case _ => false
}
@@ -442,6 +445,7 @@ trait ParallelMatching {
case _: UnApply =>
dummies
case pat =>
+ //Console.println("[class="+pat.getClass()+"]")
dummies
}
//Console.println(x)
diff --git a/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala b/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala
index 6436aef150..ed9e1c7b68 100644
--- a/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala
+++ b/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala
@@ -204,19 +204,19 @@ trait PatternMatchers { self: transform.ExplicitOuter with PatternNodes with Par
nParallel += 1
return null
} catch {
- case e =>
+ //case e =>
/*
Console.println("!!!unit: "+cunit)
Console.println("!!!selector.pos: "+selector.pos)
cunit.warning(selector.pos, "going gaga here")
Console.println("!!!problem: "+e.getMessage)
*/
- Rep.cleanup()
- return e // fallback
+ //Rep.cleanup()
+ // return e // fallback
- // non-fallback:
- //case e: CantHandle => return e
- //case e => throw e
+ //non-fallback:
+ case e: CantHandle => Rep.cleanup(); return e
+ case e => throw e
}
}