summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2007-08-13 00:40:50 +0000
committerBurak Emir <emir@epfl.ch>2007-08-13 00:40:50 +0000
commitd0655ebe76c71987f742733a11e54a1440f2bfe7 (patch)
treea8120560bed7a81f4232ec705376b4fb3da3fbf7
parentaf7db4f3c59c5d23d16f277f061e51d8041484f8 (diff)
downloadscala-d0655ebe76c71987f742733a11e54a1440f2bfe7.tar.gz
scala-d0655ebe76c71987f742733a11e54a1440f2bfe7.tar.bz2
scala-d0655ebe76c71987f742733a11e54a1440f2bfe7.zip
Par..: normalizes sym for case class test, if n...
Par..: normalizes sym for case class test, if needed Pat..: removed fallback mechanism for unexpected exceptions
-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
}
}