Par..: normalizes sym for case class test, if needed

Pat..: removed fallback mechanism for unexpected exceptions

git-svn-id: http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk@12515 5e8d7ff9-d8ef-0310-90f0-a4852d11357a
This commit is contained in:
emir 2007-08-13 00:40:50 +00:00
parent cf2509c829
commit 438a476ca1
2 changed files with 12 additions and 8 deletions

View File

@ -24,8 +24,11 @@ trait ParallelMatching {
def isCaseClass(tpe: Type) =
tpe match {
case TypeRef(_, sym, _) =>
sym.hasFlag(symtab.Flags.CASE)
case TypeRef(_, sym, _) =>
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)

View File

@ -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
}
}