summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-09-15 12:57:06 +0000
committerMartin Odersky <odersky@gmail.com>2005-09-15 12:57:06 +0000
commit2f8d5228ca7edecc4bfdbd5342fe1ec64b9396c0 (patch)
tree62cb590f903df4bf5e57b62c6093c1e4a6e705dd /sources/scala/tools/nsc/typechecker/Typers.scala
parent0c89a9d1a29e3872ef614b312fee8ed48914dbe7 (diff)
downloadscala-2f8d5228ca7edecc4bfdbd5342fe1ec64b9396c0.tar.gz
scala-2f8d5228ca7edecc4bfdbd5342fe1ec64b9396c0.tar.bz2
scala-2f8d5228ca7edecc4bfdbd5342fe1ec64b9396c0.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/typechecker/Typers.scala')
-rwxr-xr-xsources/scala/tools/nsc/typechecker/Typers.scala14
1 files changed, 7 insertions, 7 deletions
diff --git a/sources/scala/tools/nsc/typechecker/Typers.scala b/sources/scala/tools/nsc/typechecker/Typers.scala
index 1b108537b7..ffef937b0a 100755
--- a/sources/scala/tools/nsc/typechecker/Typers.scala
+++ b/sources/scala/tools/nsc/typechecker/Typers.scala
@@ -682,6 +682,11 @@ abstract class Typers: Analyzer {
copy.CaseDef(cdef, pat1, guard1, body1) setType body1.tpe
}
+ def typedCases(tree: Tree, cases: List[CaseDef], pattp: Type, pt: Type): List[CaseDef] = {
+ List.mapConserve(cases)(cdef =>
+ newTyper(context.makeNewScope(tree, context.owner)).typedCase(cdef, pattp, pt))
+ }
+
/* Transform a function node (x_1,...,x_n) => body of type FunctionN[T_1, .., T_N, R] to
*
* class $anon() extends Object() with FunctionN[T_1, .., T_N, R] with ScalaObject {
@@ -800,11 +805,6 @@ abstract class Typers: Analyzer {
def ptOrLub(tps: List[Type]) = if (isFullyDefined(pt)) pt else lub(tps);
- def typedCases(cases: List[CaseDef], pattp: Type): List[CaseDef] = {
- List.mapConserve(cases)(cdef =>
- newTyper(context.makeNewScope(tree, context.owner)).typedCase(cdef, pattp, pt))
- }
-
def typedTypeApply(fun: Tree, args: List[Tree]): Tree = fun.tpe match {
case OverloadedType(pre, alts) =>
inferPolyAlternatives(fun, args.length);
@@ -1155,7 +1155,7 @@ abstract class Typers: Analyzer {
case Match(selector, cases) =>
val selector1 = typed(selector);
- val cases1 = typedCases(cases, selector1.tpe);
+ val cases1 = typedCases(tree, cases, selector1.tpe, pt);
copy.Match(tree, selector1, cases1) setType ptOrLub(cases1 map (.tpe))
case Return(expr) =>
@@ -1171,7 +1171,7 @@ abstract class Typers: Analyzer {
case Try(block, catches, finalizer) =>
val block1 = typed(block, pt);
- val catches1 = typedCases(catches, ThrowableClass.tpe);
+ val catches1 = typedCases(tree, catches, ThrowableClass.tpe, pt);
val finalizer1 = if (finalizer.isEmpty) finalizer
else typed(finalizer, UnitClass.tpe);
copy.Try(tree, block1, catches1, finalizer1)