From b227b272110f0654064632642c2ca1031e7c68c6 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Thu, 21 Aug 2003 10:30:27 +0000 Subject: *** empty log message *** --- sources/scalac/symtab/Symbol.java | 17 ++++++++++------- sources/scalac/symtab/Type.java | 2 +- sources/scalac/symtab/classfile/Pickle.java | 6 +++--- sources/scalac/symtab/classfile/UnPickle.java | 2 +- sources/scalac/transformer/AddConstructors.java | 2 +- sources/scalac/transformer/AddInterfaces.java | 4 ++-- sources/scalac/transformer/AddInterfacesPhase.java | 4 ++-- sources/scalac/typechecker/Analyzer.java | 4 ++-- sources/scalac/typechecker/RefCheck.java | 2 +- 9 files changed, 23 insertions(+), 20 deletions(-) (limited to 'sources/scalac') diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index a98e44844d..05777015ba 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -395,7 +395,7 @@ public abstract class Symbol implements Modifiers, Kinds { /** Is this symbol the primary constructor of a type? */ public final boolean isPrimaryConstructor() { - return isConstructor() && this == primaryConstructorClass().primaryConstructor(); + return isConstructor() && this == constructorClass().primaryConstructor(); } public final boolean isGenerated() { @@ -490,7 +490,7 @@ public abstract class Symbol implements Modifiers, Kinds { */ public Symbol classOwner() { Symbol owner = owner(); - Symbol clazz = owner.primaryConstructorClass(); + Symbol clazz = owner.constructorClass(); if (clazz.primaryConstructor() == owner) return clazz; else return owner; } @@ -514,7 +514,7 @@ public abstract class Symbol implements Modifiers, Kinds { /* If this is a primary constructor, return the class it constructs. * Otherwise return the symbol itself. */ - public Symbol primaryConstructorClass() { + public Symbol constructorClass() { return this; } @@ -913,10 +913,13 @@ public abstract class Symbol implements Modifiers, Kinds { assert (this.flags & that.flags & JAVA) != 0 || (this.flags & OVERLOADFLAGS) == (that.flags & OVERLOADFLAGS) : Integer.toHexString(this.flags) + "@" + Debug.show(this) + " <> " + Integer.toHexString(that.flags) + "@" + Debug.show(that); - TermSymbol overloaded = new TermSymbol( - pos, name, owner, + assert this.isConstructor() == that.isConstructor(); + int overflags = ((this.flags | that.flags) & (JAVA | OVERLOADFLAGS)) | - (this.flags & that.flags & ACCESSFLAGS)); + (this.flags & that.flags & ACCESSFLAGS); + TermSymbol overloaded = (this.isConstructor()) + ? TermSymbol.newConstructor(this.constructorClass(), overflags) + : new TermSymbol(pos, name, owner, overflags); overloaded.setInfo(new LazyOverloadedType(this, that)); return overloaded; } @@ -1123,7 +1126,7 @@ public class TermSymbol extends Symbol { return type().valueParams(); } - public Symbol primaryConstructorClass() { + public Symbol constructorClass() { return isConstructor() && clazz != null ? clazz : this; } diff --git a/sources/scalac/symtab/Type.java b/sources/scalac/symtab/Type.java index 5a66ff9a17..847b847baa 100644 --- a/sources/scalac/symtab/Type.java +++ b/sources/scalac/symtab/Type.java @@ -989,7 +989,7 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { Type toInstance(Symbol sym, Type pre, Symbol clazz) { if (pre == NoType || clazz.kind != CLASS) return this; - Symbol ownclass = sym.owner().primaryConstructorClass(); + Symbol ownclass = sym.owner().constructorClass(); if (ownclass == clazz && pre.widen().symbol().isSubClass(ownclass)) { switch (pre.baseType(ownclass)) { diff --git a/sources/scalac/symtab/classfile/Pickle.java b/sources/scalac/symtab/classfile/Pickle.java index 8cf0efd2de..3d19855e90 100644 --- a/sources/scalac/symtab/classfile/Pickle.java +++ b/sources/scalac/symtab/classfile/Pickle.java @@ -82,7 +82,7 @@ public class Pickle implements Kinds, Modifiers, EntryTags { return sym.name.toTermName() == rootname && sym.owner() == rootowner || - sym.isConstructor() && isLocal(sym.primaryConstructorClass()) + sym.isConstructor() && isLocal(sym.constructorClass()) || (sym.kind != NONE && isLocal(sym.owner())); } @@ -134,7 +134,7 @@ public class Pickle implements Kinds, Modifiers, EntryTags { break; case VAL: if (sym.isPrimaryConstructor()) - putSymbol(sym.primaryConstructorClass()); + putSymbol(sym.constructorClass()); else if (sym.isModule()) putSymbol(sym.moduleClass()); break; @@ -319,7 +319,7 @@ public class Pickle implements Kinds, Modifiers, EntryTags { break; case VAL: if (sym.isPrimaryConstructor()) - writeRef(sym.primaryConstructorClass()); + writeRef(sym.constructorClass()); else if (sym.isModule()) writeRef(sym.moduleClass()); break; diff --git a/sources/scalac/symtab/classfile/UnPickle.java b/sources/scalac/symtab/classfile/UnPickle.java index 2e333e5cd2..f5b4f7ab4f 100644 --- a/sources/scalac/symtab/classfile/UnPickle.java +++ b/sources/scalac/symtab/classfile/UnPickle.java @@ -37,7 +37,7 @@ public class UnPickle implements Kinds, Modifiers, EntryTags { UnPickle(Symbol root, byte[] data, Name sourceName) { global = Global.instance; if (root.isConstructor()) { - this.classroot = root.primaryConstructorClass(); + this.classroot = root.constructorClass(); this.moduleroot = classroot.module(); } else if (root.isType()) { this.classroot = root; diff --git a/sources/scalac/transformer/AddConstructors.java b/sources/scalac/transformer/AddConstructors.java index 226b476dc5..732762adb3 100644 --- a/sources/scalac/transformer/AddConstructors.java +++ b/sources/scalac/transformer/AddConstructors.java @@ -73,7 +73,7 @@ public class AddConstructors extends Transformer { Symbol getConstructor(Symbol classConstr) { return getConstructor(classConstr, (((Type.MethodType)classConstr.info()).vparams), - classConstr.primaryConstructorClass()); + classConstr.constructorClass()); } Symbol getConstructor(Symbol classConstr, Symbol[] paramSyms, Symbol owner) { diff --git a/sources/scalac/transformer/AddInterfaces.java b/sources/scalac/transformer/AddInterfaces.java index fadc2eed35..628eef8321 100644 --- a/sources/scalac/transformer/AddInterfaces.java +++ b/sources/scalac/transformer/AddInterfaces.java @@ -170,7 +170,7 @@ class AddInterfaces extends Transformer { if (sym.isConstructor()) { // If the constructor now refers to the interface // constructor, use the class constructor instead. - Symbol clsSym = sym.primaryConstructorClass(); + Symbol clsSym = sym.constructorClass(); if (phase.needInterface(clsSym)) return gen.Select(qualifier, phase.getClassSymbol(clsSym).primaryConstructor()); @@ -205,7 +205,7 @@ class AddInterfaces extends Transformer { if (sym.isConstructor()) { // If the constructor now refers to the interface // constructor, use the class constructor instead. - Symbol clsSym = sym.primaryConstructorClass(); + Symbol clsSym = sym.constructorClass(); if (phase.needInterface(clsSym)) return gen.Ident(phase.getClassSymbol(clsSym).primaryConstructor()); else diff --git a/sources/scalac/transformer/AddInterfacesPhase.java b/sources/scalac/transformer/AddInterfacesPhase.java index c012f403c9..ce4f95e734 100644 --- a/sources/scalac/transformer/AddInterfacesPhase.java +++ b/sources/scalac/transformer/AddInterfacesPhase.java @@ -33,7 +33,7 @@ public class AddInterfacesPhase extends Phase { public Type transformInfo(Symbol sym, Type tp) { if (sym.isPrimaryConstructor()) { - Symbol clazz = sym.primaryConstructorClass(); + 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 @@ -195,7 +195,7 @@ public class AddInterfacesPhase extends Phase { */ protected Symbol getClassSymbol(Symbol ifaceSym) { if (ifaceSym.isPrimaryConstructor()) - return getClassSymbol(ifaceSym.primaryConstructorClass()) + return getClassSymbol(ifaceSym.constructorClass()) .primaryConstructor(); if (!needInterface(ifaceSym)) diff --git a/sources/scalac/typechecker/Analyzer.java b/sources/scalac/typechecker/Analyzer.java index da68b474b7..3718e377bb 100644 --- a/sources/scalac/typechecker/Analyzer.java +++ b/sources/scalac/typechecker/Analyzer.java @@ -276,7 +276,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds { error(sym.pos, "`override' modifier not allowed for classes"); } if ((sym.flags & DEF) != 0 && sym.owner().isPrimaryConstructor() && - (sym.owner().primaryConstructorClass().flags & CASE) != 0) { + (sym.owner().constructorClass().flags & CASE) != 0) { error(sym.pos, "`def' modifier not allowed for case class parameters"); } /*!!! @@ -1540,7 +1540,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds { constrs[i] = transform(constrs[i], CONSTRmode | SUPERmode, Type.AnyType); Symbol f = TreeInfo.methSymbol(constrs[i]); if (f != null) { - Symbol c = f.primaryConstructorClass(); + Symbol c = f.constructorClass(); if (c.kind == CLASS) { c.initialize();//to detect cycles if (i > 0 && (c.flags & JAVA) == 0 && c.isExternal()) { diff --git a/sources/scalac/typechecker/RefCheck.java b/sources/scalac/typechecker/RefCheck.java index 08f1539eb8..e78d628631 100644 --- a/sources/scalac/typechecker/RefCheck.java +++ b/sources/scalac/typechecker/RefCheck.java @@ -292,7 +292,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds { /** The variance of symbol `base' relative to the class which defines `tvar'. */ int flip(Symbol base, Symbol tvar) { - Symbol clazz = tvar.owner().primaryConstructorClass(); + Symbol clazz = tvar.owner().constructorClass(); Symbol sym = base; int flip = CoVariance; while (sym != clazz && flip != AnyVariance) { -- cgit v1.2.3