diff options
author | paltherr <paltherr@epfl.ch> | 2003-10-16 16:27:58 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-10-16 16:27:58 +0000 |
commit | a544dd45121186b06144450d2f6f1779c27f06c5 (patch) | |
tree | 8f2e1c3699beb400f506f668469eee03cc3b19c0 | |
parent | a25300aed451cfba3be0f0ce876bc38a7643e0c0 (diff) | |
download | scala-a544dd45121186b06144450d2f6f1779c27f06c5.tar.gz scala-a544dd45121186b06144450d2f6f1779c27f06c5.tar.bz2 scala-a544dd45121186b06144450d2f6f1779c27f06c5.zip |
- Cleaned
-rw-r--r-- | sources/scalac/transformer/Erasure.java | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java index 634ed0b49e..13392de67a 100644 --- a/sources/scalac/transformer/Erasure.java +++ b/sources/scalac/transformer/Erasure.java @@ -446,32 +446,6 @@ public class Erasure extends Transformer implements Modifiers { } - public void addInterfaceBridges(Symbol c, Symbol sym) { - assert c.isClass() && !c.isInterface(): Debug.show(c); - //global.nextPhase(); System.out.println("!!! " + Debug.show(sym) + " : " + sym.type().erasure() + " @ " + Debug.show(c)); global.prevPhase(); - Symbol member = sym; - - // !!! create a clone to make overriddenSymbol return the right symbol - Symbol clone = sym.cloneSymbol(); - clone.setOwner(c); - clone.setType(c.thisType().memberType(sym)); - - sym = clone; - //global.nextPhase(); System.out.println("!!! " + Debug.show(sym) + " : " + sym.type().erasure() + " @ " + Debug.show(c)); global.prevPhase(); - - Type basetype = c.thisType(); - Symbol sym1 = sym.overriddenSymbol(basetype); - sym = member; - //global.nextPhase(); System.out.println("!!! " + Debug.show(sym) + " @ " + basetype + " -> " + Debug.show(sym1) + (sym1.kind == Kinds.NONE ? "" : " : " + sym1.type().erasure() + " => " + (isSameAs(sym1.type().erasure(), sym.type().erasure()) ? "ok" : "ADD BRIDGE"))); global.prevPhase(); - - if (sym1.kind != Kinds.NONE && - !isSameAs(sym1.type().erasure(), sym.type().erasure())) { - //System.out.println("!!! " + Debug.show(sym) + " adding bridge for " + Debug.show(sym1)); - addBridge(c, sym1, member); - } - - } - ////////////////////////////////////////////////////////////////////////////////// // Transformer ///////////////////////////////////////////////////////////////////////////////// @@ -490,6 +464,13 @@ public class Erasure extends Transformer implements Modifiers { addBridge(method.owner(), method, overridden); } + public void addInterfaceBridges(Symbol owner, Symbol method) { + assert owner.isClass() && !owner.isInterface(): Debug.show(owner); + Symbol overriding = method.overridingSymbol(owner.thisType()); + if (overriding != Symbol.NONE && !isSameAs(overriding.nextType(), method.nextType())) + addBridge(owner, overriding, method); + } + private void addBridges(Symbol clasz, TreeList members) { TreeList savedBridges = bridges; HashMap savedBridgeSyms = bridgeSyms; |