diff options
author | Martin Odersky <odersky@gmail.com> | 2004-07-08 10:28:37 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-07-08 10:28:37 +0000 |
commit | ce3243d0a453d706dd9b6038b3bee92f4264903c (patch) | |
tree | c3e2d4551e5998f9feeb1ac0c9b59e52935c7484 /sources/scalac/transformer | |
parent | bc7e8ae564e604d082ff0cf0a8b9de2fda4c89b6 (diff) | |
download | scala-ce3243d0a453d706dd9b6038b3bee92f4264903c.tar.gz scala-ce3243d0a453d706dd9b6038b3bee92f4264903c.tar.bz2 scala-ce3243d0a453d706dd9b6038b3bee92f4264903c.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/transformer')
-rw-r--r-- | sources/scalac/transformer/AddInterfaces.java | 9 | ||||
-rw-r--r-- | sources/scalac/transformer/AddInterfacesPhase.java | 4 | ||||
-rw-r--r-- | sources/scalac/transformer/Erasure.java | 54 | ||||
-rw-r--r-- | sources/scalac/transformer/ExpandMixinsPhase.java | 3 | ||||
-rw-r--r-- | sources/scalac/transformer/TypesAsValuesPhase.java | 3 |
5 files changed, 10 insertions, 63 deletions
diff --git a/sources/scalac/transformer/AddInterfaces.java b/sources/scalac/transformer/AddInterfaces.java index a54bcc95e8..1f4b057ee4 100644 --- a/sources/scalac/transformer/AddInterfaces.java +++ b/sources/scalac/transformer/AddInterfaces.java @@ -227,13 +227,8 @@ public class AddInterfaces extends GenTransformer { */ private Tree getClassTree(Symbol clasz, TreeList body, Map methods) { Scope members = clasz.nextInfo().members(); - /* - for (Scope.SymbolIterator i = members.iterator(false); i.hasNext(); ) { - Symbol sym = i.next(); - System.out.println(clasz + " defines " + sym + ":" + sym.getType()); - } - */ - for (Scope.SymbolIterator i = members.iterator(true); i.hasNext(); ) { + for (Scope.SymbolIterator i = members.iterator(); + i.hasNext(); ) { Symbol member = i.next(); if (!member.isTerm()) continue; body.append(getMemberTree(clasz, member, methods)); diff --git a/sources/scalac/transformer/AddInterfacesPhase.java b/sources/scalac/transformer/AddInterfacesPhase.java index 9b7ebf6675..6cf968bfef 100644 --- a/sources/scalac/transformer/AddInterfacesPhase.java +++ b/sources/scalac/transformer/AddInterfacesPhase.java @@ -49,7 +49,7 @@ public class AddInterfacesPhase extends Phase { Scope newMembers = new Scope(); Scope.SymbolIterator oldMembersIt = - new Scope.UnloadIterator(tp.members().iterator()); + tp.members().iterator(); while (oldMembersIt.hasNext()) { Symbol member = oldMembersIt.next(); @@ -186,7 +186,7 @@ public class AddInterfacesPhase extends Phase { // Clone all members, entering them in the class scope. Scope classMembers = new Scope(); Scope.SymbolIterator ifaceMembersIt = - new Scope.UnloadIterator(ifaceSym.members().iterator()); + ifaceSym.members().iterator(); while (ifaceMembersIt.hasNext()) { Symbol ifaceMemberSym = ifaceMembersIt.next(); diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java index d200aab112..ea77bdf926 100644 --- a/sources/scalac/transformer/Erasure.java +++ b/sources/scalac/transformer/Erasure.java @@ -113,7 +113,6 @@ public class Erasure extends GenTransformer implements Modifiers { case ClassDef(_, _, _, _, _, Template(_, Tree[] body)): Symbol clasz = tree.symbol(); TreeList members = new TreeList(transform(body)); - checkOverloadedTermsOf(clasz); addBridges(clasz, members); return gen.ClassDef(clasz, members.toArray()); @@ -570,56 +569,6 @@ public class Erasure extends GenTransformer implements Modifiers { throw Debug.abort("non-array type", type); } - //######################################################################## - // Private Methods - Overlapping signatures detection - - /** - * Checks that overloaded terms of the given class have no - * overlapping erased signatures. - */ - private void checkOverloadedTermsOf(Symbol clasz) { - // !!! we might also accidentally override an inherited method ! - for (SymbolIterator si = clasz.members().iterator(); si.hasNext(); ) { - Symbol symbol = si.next(); - if (!symbol.isTerm()) continue; - switch (symbol.info()) { - case OverloadedType(Symbol[] symbols, _): - Type[] types = new Type[symbols.length]; - for (int i = 0; i < symbols.length; i++) { - types[i] = symbols[i].nextType(); - for (int j = 0; j < i; j++) { - if (!isSameAs(types[i], types[j])) continue; - errorOverlappingSignatures(symbols[j], symbols[i]); - break; - } - } - } - } - } - - /** Reports an overlapping signature error for given symbols. */ - private void errorOverlappingSignatures(Symbol symbol1, Symbol symbol2) { - SymbolTablePrinter printer = new SymbolTablePrinter(" "); - printer.print("overlapping overloaded alternatives;").space(); - printer.print("the two following alternatives of").space(); - printer.printSymbolKindAndName(symbol1).space(); - printer.print("have the same erasure:").space(); - printer.printType(symbol1.nextType()); - Phase phase = global.currentPhase; - global.currentPhase = global.PHASE.ANALYZER.phase(); - printer.indent(); - printer.line().print("alternative 1:").space().printSignature(symbol1); - printer.line().print("alternative 2:").space().printSignature(symbol2); - printer.undent(); - global.currentPhase = phase; - unit.error(symbol2.pos, printer.toString()); - } - - //######################################################################## - //######################################################################## - //######################################################################## - //######################################################################## - ////////////////////////////////////////////////////////////////////////////////// // Bridge Building ///////////////////////////////////////////////////////////////////////////////// @@ -732,7 +681,8 @@ public class Erasure extends GenTransformer implements Modifiers { } private void addInterfaceBridgesAux(Symbol owner, Scope symbols) { - for (Scope.SymbolIterator i = symbols.iterator(true); i.hasNext();) { + for (Scope.SymbolIterator i = symbols.iterator(); + i.hasNext();) { Symbol member = i.next(); if (!member.isTerm() || !member.isDeferred()) continue; addInterfaceBridges(owner, member); diff --git a/sources/scalac/transformer/ExpandMixinsPhase.java b/sources/scalac/transformer/ExpandMixinsPhase.java index e43ed7b975..57c94a8708 100644 --- a/sources/scalac/transformer/ExpandMixinsPhase.java +++ b/sources/scalac/transformer/ExpandMixinsPhase.java @@ -394,7 +394,8 @@ public class ExpandMixinsPhase extends Phase { private void createMixedInMemberSymbols(Scope symbols) { Scope scope = clasz.members(); - for (SymbolIterator i = symbols.iterator(true); i.hasNext();) { + for (SymbolIterator i = symbols.iterator(); + i.hasNext();) { Symbol member = i.next(); boolean shadowed = member.isPrivate() || member.isInitializer() || member.overridingSymbol(clasz.thisType()) != member; diff --git a/sources/scalac/transformer/TypesAsValuesPhase.java b/sources/scalac/transformer/TypesAsValuesPhase.java index d3147ad981..d5b07dd28d 100644 --- a/sources/scalac/transformer/TypesAsValuesPhase.java +++ b/sources/scalac/transformer/TypesAsValuesPhase.java @@ -100,7 +100,8 @@ public class TypesAsValuesPhase extends Phase { if (newSymbols == null) { newSymbols = new HashMap(); - Scope.SymbolIterator membersIt = classSym.members().iterator(true); + Scope.SymbolIterator membersIt = + classSym.members().iterator(); while (membersIt.hasNext()) { Symbol member = membersIt.next(); if (member.isType() /*&& !member.isClass()*/) { |