diff options
author | paltherr <paltherr@epfl.ch> | 2004-02-12 15:10:40 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-02-12 15:10:40 +0000 |
commit | 2014d1feeefd1bc6bcfee0cee347c4a77db05253 (patch) | |
tree | deffe18f0bf6527171d655885445abc8bb17023b /sources/scalac/transformer/Erasure.java | |
parent | b62de8dc4f94efa47bf6714865b8bbf4df700046 (diff) | |
download | scala-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.java | 16 |
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}); } |