diff options
author | paltherr <paltherr@epfl.ch> | 2003-07-04 21:02:07 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-07-04 21:02:07 +0000 |
commit | 0d359a148ea4e839ebce28b1593798e6902ef4aa (patch) | |
tree | dc0043f4f7f11f395f21535d7af7f0f127084251 /sources | |
parent | c5f1b804dd5c08a4701e33b7df56af13e03734cb (diff) | |
download | scala-0d359a148ea4e839ebce28b1593798e6902ef4aa.tar.gz scala-0d359a148ea4e839ebce28b1593798e6902ef4aa.tar.bz2 scala-0d359a148ea4e839ebce28b1593798e6902ef4aa.zip |
- Factored some code
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 10 | ||||
-rw-r--r-- | sources/scalac/typechecker/Analyzer.java | 4 |
2 files changed, 4 insertions, 10 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index 883bdf515c..43c2867796 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -978,7 +978,7 @@ public class TermSymbol extends Symbol { public static TermSymbol newJavaPackageModule(Name name, Symbol owner, Type.LazyType parser) { TermSymbol sym = newModule(Position.NOPOS, name, owner, JAVA | PACKAGE); sym.clazz.flags |= SYNTHETIC; - sym.clazz.setInfo(parser); + sym.clazz.setInfo(parser != null ? parser : Type.compoundType(Type.EMPTY_ARRAY, new Scope(), sym)); return sym; } @@ -1260,28 +1260,24 @@ public class ClassSymbol extends TypeSymbol { public ClassSymbol(Name name, Symbol owner, SourceCompleter parser) { this(Position.NOPOS, name, owner, 0); this.module = TermSymbol.newCompanionModule(this, 0, parser); - this.mangled = name; this.setInfo(parser); } /** Constructor for classes to load as class files. */ public ClassSymbol(Name name, Symbol owner, ClassParser parser) { - super(CLASS, Position.NOPOS, name, owner, JAVA); - this.constructor = TermSymbol.newConstructor(this, flags & ~MODUL); + this(Position.NOPOS, name, owner, JAVA); this.module = TermSymbol.newCompanionModule(this, JAVA, parser.staticsParser(this)); - this.mangled = name; this.setInfo(parser); } /** Return a fresh symbol with the same fields as this one. */ public Symbol cloneSymbol() { - ClassSymbol other = new ClassSymbol(pos, name, owner(), flags); + ClassSymbol other = new ClassSymbol(pos, name, owner(), flags, module); other.setInfo(info()); other.constructor.setInfo(constructor.info()); other.mangled = mangled; - other.module = module; if (thisSym != this) other.setTypeOfThis(typeOfThis()); return other; } diff --git a/sources/scalac/typechecker/Analyzer.java b/sources/scalac/typechecker/Analyzer.java index a68f420361..ea5ed2ce6f 100644 --- a/sources/scalac/typechecker/Analyzer.java +++ b/sources/scalac/typechecker/Analyzer.java @@ -660,9 +660,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds { Symbol packageSymbol(int pos, Symbol base, Name name) { Symbol p = base.members().lookup(name); if (p.kind == NONE) { - p = TermSymbol.newModule( - Position.NOPOS, name, base.moduleClass(), JAVA | PACKAGE); - p.moduleClass().setInfo(Type.compoundType(Type.EMPTY_ARRAY, new Scope(), p)); + p = TermSymbol.newJavaPackageModule(name, base.moduleClass(), null); base.members().enter(p); } else if (!p.isPackage()) { error(pos, "package and class with same name"); |