summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/Erasure.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-02-12 15:10:40 +0000
committerpaltherr <paltherr@epfl.ch>2004-02-12 15:10:40 +0000
commit2014d1feeefd1bc6bcfee0cee347c4a77db05253 (patch)
treedeffe18f0bf6527171d655885445abc8bb17023b /sources/scalac/transformer/Erasure.java
parentb62de8dc4f94efa47bf6714865b8bbf4df700046 (diff)
downloadscala-2014d1feeefd1bc6bcfee0cee347c4a77db05253.tar.gz
scala-2014d1feeefd1bc6bcfee0cee347c4a77db05253.tar.bz2
scala-2014d1feeefd1bc6bcfee0cee347c4a77db05253.zip
- Changed Tree.Block(Tree[]) to Tree.Block(Tree...
- Changed Tree.Block(Tree[]) to Tree.Block(Tree[],Tree)
Diffstat (limited to 'sources/scalac/transformer/Erasure.java')
-rw-r--r--sources/scalac/transformer/Erasure.java16
1 files changed, 6 insertions, 10 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java
index e6a5fdd795..5da45dd2c5 100644
--- a/sources/scalac/transformer/Erasure.java
+++ b/sources/scalac/transformer/Erasure.java
@@ -220,7 +220,7 @@ public class Erasure extends GenTransformer implements Modifiers {
case Literal(AConstant.ZERO):
return gen.mkNullLit(tree.pos);
- case Block(_):
+ case Block(_, _):
case If(_, _, _):
case Switch(_, _, _, _):
return transform(tree, tree.getType().fullErasure());
@@ -251,13 +251,8 @@ public class Erasure extends GenTransformer implements Modifiers {
private Tree transform(Tree tree, Type pt) {
switch (tree) {
- case Block(Tree[] stats):
- if (stats.length == 0) return transformUnit(tree.pos, pt);
- stats = Tree.cloneArray(stats);
- for (int i = 0; i < stats.length - 1; i++)
- stats[i] = transform(stats[i]);
- stats[stats.length - 1] = transform(stats[stats.length - 1], pt);
- return gen.Block(tree.pos, stats);
+ case Block(Tree[] stats, Tree value):
+ return gen.Block(tree.pos, transform(stats), transform(value, pt));
case If(Tree cond, Tree thenp, Tree elsep):
cond = transform(cond, UNBOXED_BOOLEAN);
@@ -272,8 +267,9 @@ public class Erasure extends GenTransformer implements Modifiers {
return gen.Switch(tree.pos, test, tags, bodies, otherwise, pt);
case Return(_):
+ // !!! why do we build a block here?
Tree value = transform(gen.mkDefaultValue(tree.pos, pt), pt);
- return gen.mkBlock(new Tree[] {transform(tree), value});
+ return gen.mkBlock(transform(tree), value);
case LabelDef(_, _, _):
case Assign(_, _):
@@ -354,7 +350,7 @@ public class Erasure extends GenTransformer implements Modifiers {
Symbol symbol = primitives.getBoxValueSymbol(tree.getType());
Tree boxtree = gen.mkGlobalRef(tree.pos, symbol);
return tree.getType().equals(UNBOXED_UNIT)
- ? gen.Block(new Tree[]{tree, gen.mkApply__(boxtree)})
+ ? gen.mkBlock(tree, gen.mkApply__(boxtree))
: gen.mkApply_V(boxtree, new Tree[]{tree});
}