diff options
author | Martin Odersky <odersky@gmail.com> | 2005-10-11 20:28:06 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-10-11 20:28:06 +0000 |
commit | 76993fa93bc39bab65e61b4fa9a3887befd48372 (patch) | |
tree | 71186c566ccdb15b5264f6e649a67212cc246feb /sources/scala/tools/nsc/transform/Erasure.scala | |
parent | 899e2bf1b2aac960ba459cc1e1667ac05cf5b2cc (diff) | |
download | scala-76993fa93bc39bab65e61b4fa9a3887befd48372.tar.gz scala-76993fa93bc39bab65e61b4fa9a3887befd48372.tar.bz2 scala-76993fa93bc39bab65e61b4fa9a3887befd48372.zip |
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/transform/Erasure.scala')
-rwxr-xr-x | sources/scala/tools/nsc/transform/Erasure.scala | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/sources/scala/tools/nsc/transform/Erasure.scala b/sources/scala/tools/nsc/transform/Erasure.scala index ac2413c678..b14b939e70 100755 --- a/sources/scala/tools/nsc/transform/Erasure.scala +++ b/sources/scala/tools/nsc/transform/Erasure.scala @@ -278,7 +278,23 @@ abstract class Erasure extends AddInterfaces with typechecker.Analyzer { /** A replacement for the standard typer's `typed1' method */ override protected def typed1(tree: Tree, mode: int, pt: Type): Tree = { - super.typed1(adaptMember(tree), mode, pt) + val tree1 = super.typed1(adaptMember(tree), mode, pt); + tree1 match { + case If(cond, thenp, elsep) => + val thenp1 = adaptToType(thenp, tree1.tpe); + val elsep1 = if (elsep.isEmpty) elsep else adaptToType(elsep, tree1.tpe); + copy.If(tree1, cond, thenp1, elsep1); + case Match(selector, cases) => + val cases1 = cases map { + case cdef @ CaseDef(pat, guard, body) => + val body1 = adaptToType(body, tree1.tpe); + copy.CaseDef(cdef, pat, guard, body1) setType body1.tpe + } + copy.Match(tree1, selector, cases1) + // todo: do same for try + case _ => + tree1 + } } } |