summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/AddInterfaces.java
diff options
context:
space:
mode:
authorschinz <schinz@epfl.ch>2003-08-26 15:00:56 +0000
committerschinz <schinz@epfl.ch>2003-08-26 15:00:56 +0000
commit4c10e8515b2d1b7991f660b444f4b0a5d014286d (patch)
tree48f43b342a7f99f103b9fb521d06ee7eeadd6c0c /sources/scalac/transformer/AddInterfaces.java
parent288ba9925ed53f8a4ad11f38887914e76bf3e350 (diff)
downloadscala-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
Diffstat (limited to 'sources/scalac/transformer/AddInterfaces.java')
-rw-r--r--sources/scalac/transformer/AddInterfaces.java13
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);