summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/Erasure.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-10-16 16:27:58 +0000
committerpaltherr <paltherr@epfl.ch>2003-10-16 16:27:58 +0000
commita544dd45121186b06144450d2f6f1779c27f06c5 (patch)
tree8f2e1c3699beb400f506f668469eee03cc3b19c0 /sources/scalac/transformer/Erasure.java
parenta25300aed451cfba3be0f0ce876bc38a7643e0c0 (diff)
downloadscala-a544dd45121186b06144450d2f6f1779c27f06c5.tar.gz
scala-a544dd45121186b06144450d2f6f1779c27f06c5.tar.bz2
scala-a544dd45121186b06144450d2f6f1779c27f06c5.zip
- Cleaned
Diffstat (limited to 'sources/scalac/transformer/Erasure.java')
-rw-r--r--sources/scalac/transformer/Erasure.java33
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;