diff options
author | schinz <schinz@epfl.ch> | 2003-08-26 15:00:56 +0000 |
---|---|---|
committer | schinz <schinz@epfl.ch> | 2003-08-26 15:00:56 +0000 |
commit | 4c10e8515b2d1b7991f660b444f4b0a5d014286d (patch) | |
tree | 48f43b342a7f99f103b9fb521d06ee7eeadd6c0c | |
parent | 288ba9925ed53f8a4ad11f38887914e76bf3e350 (diff) | |
download | scala-4c10e8515b2d1b7991f660b444f4b0a5d014286d.tar.gz scala-4c10e8515b2d1b7991f660b444f4b0a5d014286d.tar.bz2 scala-4c10e8515b2d1b7991f660b444f4b0a5d014286d.zip |
- bug fix: try to correctly transform secondary...
- bug fix: try to correctly transform secondary constructors
-rw-r--r-- | sources/scalac/transformer/AddInterfaces.java | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sources/scalac/transformer/AddInterfaces.java b/sources/scalac/transformer/AddInterfaces.java index 466c58a07d..516a9af6bf 100644 --- a/sources/scalac/transformer/AddInterfaces.java +++ b/sources/scalac/transformer/AddInterfaces.java @@ -119,18 +119,25 @@ class AddInterfaces extends Transformer { Tree tpe, Tree rhs): { Symbol sym = tree.symbol(); - Symbol owner = sym.owner(); Tree newTree; + Symbol owner; + if (sym.isConstructor()) + owner = sym.constructorClass(); + else + owner = sym.owner(); + if (owner.isClass() && phase.needInterface(owner)) { Symbol classOwner = phase.getClassSymbol(owner); Map ownerMemberMap = phase.getClassMemberMap(classOwner); Symbol newSym = (Symbol)ownerMemberMap.get(sym); - assert newSym != null; + assert newSym != null + : Debug.show(sym) + " not in " + ownerMemberMap; global.nextPhase(); typeSubst.insertSymbol(sym.typeParams(), newSym.typeParams()); - typeSubst.insertSymbol(sym.valueParams(), newSym.valueParams()); + if (!sym.isConstructor()) + typeSubst.insertSymbol(sym.valueParams(), newSym.valueParams()); global.prevPhase(); pushOwnerSubst(sym, newSym); |