diff options
author | paltherr <paltherr@epfl.ch> | 2004-03-10 19:08:48 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-03-10 19:08:48 +0000 |
commit | bd9f74861ec3e664fc9e94795fd8c16b7580e1df (patch) | |
tree | fd24674b44bb117567372ac2590b1f48aeb9036d /sources/scalac/symtab/Symbol.java | |
parent | 5998eb1012cf801a22bf494d55410b44ea452fca (diff) | |
download | scala-bd9f74861ec3e664fc9e94795fd8c16b7580e1df.tar.gz scala-bd9f74861ec3e664fc9e94795fd8c16b7580e1df.tar.bz2 scala-bd9f74861ec3e664fc9e94795fd8c16b7580e1df.zip |
- Added factory method Symbol.newConstructor
- Changed method Symbol.addConstructor to receive new constructor
- as argument Changed Symbol, Analyzer, class parser and
- picklers to use new factory method Removed now unused methods
- TermSymbol.makeConstructor/newConstructor
Diffstat (limited to 'sources/scalac/symtab/Symbol.java')
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index 64d24000e8..35e52690fc 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -87,6 +87,12 @@ public abstract class Symbol implements Modifiers, Kinds { // Factories -------------------------------------------------------------- + /** Creates a new constructor of this symbol. */ + public final TermSymbol newConstructor(int pos, int flags) { + assert isType(): Debug.show(this); + return new TermSymbol(pos, Names.CONSTRUCTOR, owner(), flags, 0, this); + } + /** Creates a new module owned by this symbol. */ public final TermSymbol newModule(int pos, int flags, Name name) { ClassSymbol clasz = newModuleClass(pos, flags, name.toTypeName()); @@ -353,9 +359,9 @@ public abstract class Symbol implements Modifiers, Kinds { throw new ApplicationError("setLoBound inapplicable for " + this); } - /** Add an auxiliary constructor to class; return created symbol. + /** Add an auxiliary constructor to class. */ - public Symbol addConstructor() { + public void addConstructor(Symbol constr) { throw new ApplicationError("addConstructor inapplicable for " + this); } @@ -1266,7 +1272,7 @@ public abstract class Symbol implements Modifiers, Kinds { int overflags = (this.flags & that.flags & (JAVA | ACCESSFLAGS | DEFERRED)) | ((this.flags | that.flags) & ACCESSOR); TermSymbol overloaded = (this.isConstructor()) - ? TermSymbol.newConstructor(this.constructorClass(), overflags) + ? this.constructorClass().newConstructor(this.constructorClass().pos, overflags) : new TermSymbol(pos, name, owner, overflags); overloaded.setInfo(new LazyOverloadedType(this, that)); return overloaded; @@ -1451,22 +1457,6 @@ public class TermSymbol extends Symbol { } } - public static TermSymbol newConstructor(Symbol clazz, int flags) { - TermSymbol sym = new TermSymbol( - clazz.pos, Names.CONSTRUCTOR, clazz.owner(), flags); - sym.clazz = clazz; - return sym; - } - - public TermSymbol makeConstructor(ClassSymbol clazz) { - this.clazz = clazz; - return this; - } - - public static TermSymbol newJavaConstructor(Symbol clazz) { - return newConstructor(clazz, clazz.flags & (ACCESSFLAGS | JAVA)); - } - /** Dummy symbol for template of given class */ public static Symbol newLocalDummy(Symbol clazz) { @@ -1530,7 +1520,7 @@ public abstract class TypeSymbol extends Symbol { super(kind, pos, name, owner, flags, attrs); this.closures = new ClosureHistory(); assert name.isTypeName() : this; - this.constructor = TermSymbol.newConstructor(this, flags & CONSTRFLAGS); + this.constructor = newConstructor(pos, flags & CONSTRFLAGS); } protected void update(int pos, int flags) { @@ -1557,8 +1547,8 @@ public abstract class TypeSymbol extends Symbol { } Symbol[] alts = allConstructors().alternativeSymbols(); for (int i = 1; i < alts.length; i++) { - Symbol constr = other.addConstructor(); - constr.flags = other.flags; + Symbol constr = other.newConstructor(alts[i].pos, alts[i].flags); + other.addConstructor(constr); Type info = alts[i].info().cloneType(alts[i], constr); if (!isTypeAlias()) info = fixConstrType(info, other); constr.setInfo(info); @@ -1587,10 +1577,9 @@ public abstract class TypeSymbol extends Symbol { /** add a constructor */ - public final Symbol addConstructor() { - Symbol constr = TermSymbol.newConstructor(this, flags & CONSTRFLAGS); + public final void addConstructor(Symbol constr) { + assert constr.isConstructor(): Debug.show(constr); constructor = constructor.overloadWith(constr); - return constr; } /** Get primary constructor */ @@ -1958,7 +1947,7 @@ public final class ErrorSymbol extends Symbol { /** Get primary constructor */ public Symbol primaryConstructor() { - return TermSymbol.newConstructor(this, 0).setInfo(Type.ErrorType); + return newConstructor(pos, 0).setInfo(Type.ErrorType); } /** Return the next enclosing class */ |