diff options
author | paltherr <paltherr@epfl.ch> | 2003-09-29 15:23:42 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-09-29 15:23:42 +0000 |
commit | 7f76c81a3e71954f6fef3a445d6c3ac327494a27 (patch) | |
tree | 0a9e4b9de2d3125f53a75ccf9820a36735497a07 /sources/scalac | |
parent | 561f5efc2572837a9d9db8c7a43c20363a086251 (diff) | |
download | scala-7f76c81a3e71954f6fef3a445d6c3ac327494a27.tar.gz scala-7f76c81a3e71954f6fef3a445d6c3ac327494a27.tar.bz2 scala-7f76c81a3e71954f6fef3a445d6c3ac327494a27.zip |
- Added a block around each Return to make back...
- Added a block around each Return to make backend happy. Removed flag
- DEFERRED from bridge methods
Diffstat (limited to 'sources/scalac')
-rw-r--r-- | sources/scalac/transformer/Erasure.java | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java index a55d08d400..fbc75fc9cd 100644 --- a/sources/scalac/transformer/Erasure.java +++ b/sources/scalac/transformer/Erasure.java @@ -247,7 +247,7 @@ public class Erasure extends Transformer implements Modifiers { } Symbol bridgeSym = sym.cloneSymbol(); bridgeSym.flags |= (SYNTHETIC | BRIDGE); - bridgeSym.flags &= ~JAVA; + bridgeSym.flags &= ~(JAVA | DEFERRED); bridgesOfSym = bridgesOfSym.incl(bridgeSym); bridgeSyms.put(sym, bridgesOfSym); bridgeSym.setOwner(owner); @@ -410,7 +410,9 @@ public class Erasure extends Transformer implements Modifiers { case Return(Tree expr): Tree expr1 = transform(expr, tree.symbol().type().resultType().fullErasure()); - return copy.Return(tree, expr1).setType(owntype); + Tree zero = gen.Ident(tree.pos, definitions.NULL); + return make.Block(tree.pos, new Tree[] { + copy.Return(tree, expr1).setType(owntype), zero}).setType(zero.type()); case New(Template templ): if (tree.type.symbol() == definitions.UNIT_CLASS) |