diff options
author | Martin Odersky <odersky@gmail.com> | 2003-10-30 14:59:42 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-10-30 14:59:42 +0000 |
commit | d23d0a9c737c6350b3f00a555a3ec61fff8d92dc (patch) | |
tree | 7c6a3649edf42fceb39087c97eeae9f760a8503f /sources/scalac/transformer | |
parent | 4764fc555502237fc7f423af4200520a975a69fd (diff) | |
download | scala-d23d0a9c737c6350b3f00a555a3ec61fff8d92dc.tar.gz scala-d23d0a9c737c6350b3f00a555a3ec61fff8d92dc.tar.bz2 scala-d23d0a9c737c6350b3f00a555a3ec61fff8d92dc.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/transformer')
-rw-r--r-- | sources/scalac/transformer/Erasure.java | 3 | ||||
-rw-r--r-- | sources/scalac/transformer/UnCurry.java | 3 | ||||
-rw-r--r-- | sources/scalac/transformer/UnCurryPhase.java | 6 |
3 files changed, 8 insertions, 4 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java index 0b5b3b29d8..ae1a6ae658 100644 --- a/sources/scalac/transformer/Erasure.java +++ b/sources/scalac/transformer/Erasure.java @@ -232,7 +232,8 @@ public class Erasure extends Transformer implements Modifiers { return gen.Ident(tree.pos, symbol); case Literal(Object value): - return gen.mkLit(tree.pos, value); + return tree.setType(tree.type.erasure()); + //return gen.mkLit(tree.pos, value); case Block(_): case If(_, _, _): diff --git a/sources/scalac/transformer/UnCurry.java b/sources/scalac/transformer/UnCurry.java index 88d978fb43..32389d9841 100644 --- a/sources/scalac/transformer/UnCurry.java +++ b/sources/scalac/transformer/UnCurry.java @@ -113,7 +113,8 @@ public class UnCurry extends OwnerTransformer public Tree transform(Tree tree) { //new scalac.ast.printer.TextTreePrinter().print("uncurry: ").print(tree).println().end();//DEBUG //uncurry type and symbol - if (tree.type != null) tree.type = descr.uncurry(tree.type); + Type prevtype = tree.type; + if (prevtype != null) tree.type = descr.uncurry(prevtype); switch (tree) { case ClassDef(_, _, AbsTypeDef[] tparams, ValDef[][] vparams, Tree tpe, Template impl): return copy.ClassDef( diff --git a/sources/scalac/transformer/UnCurryPhase.java b/sources/scalac/transformer/UnCurryPhase.java index e8bdc1b77e..3309bce67b 100644 --- a/sources/scalac/transformer/UnCurryPhase.java +++ b/sources/scalac/transformer/UnCurryPhase.java @@ -53,13 +53,13 @@ public class UnCurryPhase extends Phase implements Modifiers { else return Type.MethodType(params, newtp1); } case PolyType(Symbol[] tparams, Type tp1): + Type newtp1 = uncurry(tp1); switch (tp1) { case MethodType(_, _): - Type newtp1 = uncurry(tp1); if (newtp1 == tp1) return tp; else return Type.PolyType(tparams, newtp1); default: - Type newtp1 = Type.MethodType(Symbol.EMPTY_ARRAY, tp1); + newtp1 = Type.MethodType(Symbol.EMPTY_ARRAY, newtp1); if (tparams.length == 0) return newtp1; else return Type.PolyType(tparams, newtp1); } @@ -67,6 +67,8 @@ public class UnCurryPhase extends Phase implements Modifiers { return new Type.Map() { public Type apply(Type t) { return uncurry(t); } }.map(tp); + case ConstantType(Type base, _): + return base; default: return tp; } |