diff options
author | paltherr <paltherr@epfl.ch> | 2004-03-28 17:32:52 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-03-28 17:32:52 +0000 |
commit | 70e9690e72bae30eccc9ce46eda67615a0d48111 (patch) | |
tree | c5e378d63aac8d84b459b283b89ae20d849c87f4 | |
parent | 6b60fc73e6936956e251f3086e4345c5d5bb2835 (diff) | |
download | scala-70e9690e72bae30eccc9ce46eda67615a0d48111.tar.gz scala-70e9690e72bae30eccc9ce46eda67615a0d48111.tar.bz2 scala-70e9690e72bae30eccc9ce46eda67615a0d48111.zip |
- Removed now useless code for constructors
-rw-r--r-- | sources/scalac/transformer/AddInterfacesPhase.java | 44 |
1 files changed, 7 insertions, 37 deletions
diff --git a/sources/scalac/transformer/AddInterfacesPhase.java b/sources/scalac/transformer/AddInterfacesPhase.java index b04b80dd1a..8505a60bec 100644 --- a/sources/scalac/transformer/AddInterfacesPhase.java +++ b/sources/scalac/transformer/AddInterfacesPhase.java @@ -32,13 +32,8 @@ public class AddInterfacesPhase extends Phase { } public Type transformInfo(Symbol sym, Type tp) { - if (sym.isConstructor()) { - Symbol clazz = sym.constructorClass(); - if (!(clazz.isClass() && needInterface(clazz))) return tp; - // The symbol is a constructor of a class which needs - // an interface. All its value arguments have to be - // removed. - return removeValueParams(tp); + if (sym.isConstructor() || sym.owner().isConstructor()) { + return tp; } else if (sym.isClass() && !sym.isJava()) { Definitions definitions = global.definitions; if (sym == definitions.ANY_CLASS) return tp; @@ -182,10 +177,7 @@ public class AddInterfacesPhase extends Phase { * given symbol. */ protected Symbol getClassSymbol(Symbol ifaceSym) { - if (ifaceSym.isPrimaryConstructor()) - return getClassSymbol(ifaceSym.constructorClass()) - .primaryConstructor(); - + assert ifaceSym.isClass(): Debug.show(ifaceSym); if (!needInterface(ifaceSym)) return ifaceSym; @@ -196,15 +188,6 @@ public class AddInterfacesPhase extends Phase { ifaceSym.flags &= ~Modifiers.FINAL; classSym.flags &= ~Modifiers.INTERFACE; - // Remove non-primary constructors from interface - if (ifaceSym.allConstructors().isOverloaded()) { - Symbol primary = ifaceSym.primaryConstructor(); - Symbol[] altsyms = { primary }; - Type[] alttypes = { primary.nextType() }; - Type allType = Type.OverloadedType(altsyms, alttypes); - ifaceSym.allConstructors().updateInfo(allType); - } - Scope ifaceOwnerMembers = ifaceSym.owner().members(); ifaceOwnerMembers.enter(classSym); @@ -215,19 +198,9 @@ public class AddInterfacesPhase extends Phase { SymbolSubstTypeMap classSubst = newClassSubst(classSym); Map classMemberMap = newClassMemberMap(classSym); - Symbol[] allClassConstrs= - classSym.allConstructors().alternativeSymbols(); - Symbol[] allIFaceConstrs= - ifaceSym.allConstructors().alternativeSymbols(); - for (int i = 0; i < allClassConstrs.length; ++i) { - Symbol iConstr = allIFaceConstrs[i]; - Symbol cConstr = allClassConstrs[i]; - classSubst.insertSymbol(iConstr.typeParams(), - cConstr.typeParams()); - classSubst.insertSymbol(iConstr.valueParams(), - cConstr.valueParams()); - classMemberMap.put(iConstr, cConstr); - } + Symbol[] ifaceTParams = ifaceSym.typeParams(); + Symbol[] classTParams = classSym.typeParams(); + classSubst.insertSymbol(ifaceTParams, classTParams); // Clone all members, entering them in the class scope. Scope classMembers = new Scope(); @@ -237,8 +210,7 @@ public class AddInterfacesPhase extends Phase { Symbol ifaceMemberSym = ifaceMembersIt.next(); if (ifaceMemberSym.isType() - || ifaceMemberSym.isDeferred() - || ifaceMemberSym.isPrimaryConstructor()) + || ifaceMemberSym.isDeferred()) continue; Symbol classMemberSym; @@ -272,8 +244,6 @@ public class AddInterfacesPhase extends Phase { classMemberMap.put(ifaceMemberSym, classMemberSym); classMembers.enterOrOverload(classMemberSym); - if (classMemberSym.isClass()) - classMembers.enterOrOverload(classMemberSym.primaryConstructor()); } // Give correct type to the class symbol by using class |