summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-10-30 14:59:42 +0000
committerMartin Odersky <odersky@gmail.com>2003-10-30 14:59:42 +0000
commitd23d0a9c737c6350b3f00a555a3ec61fff8d92dc (patch)
tree7c6a3649edf42fceb39087c97eeae9f760a8503f /sources/scalac/transformer
parent4764fc555502237fc7f423af4200520a975a69fd (diff)
downloadscala-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.java3
-rw-r--r--sources/scalac/transformer/UnCurry.java3
-rw-r--r--sources/scalac/transformer/UnCurryPhase.java6
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;
}