summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-09-29 15:23:42 +0000
committerpaltherr <paltherr@epfl.ch>2003-09-29 15:23:42 +0000
commit7f76c81a3e71954f6fef3a445d6c3ac327494a27 (patch)
tree0a9e4b9de2d3125f53a75ccf9820a36735497a07 /sources
parent561f5efc2572837a9d9db8c7a43c20363a086251 (diff)
downloadscala-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')
-rw-r--r--sources/scalac/transformer/Erasure.java6
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)