summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-07-04 21:02:07 +0000
committerpaltherr <paltherr@epfl.ch>2003-07-04 21:02:07 +0000
commit0d359a148ea4e839ebce28b1593798e6902ef4aa (patch)
treedc0043f4f7f11f395f21535d7af7f0f127084251 /sources
parentc5f1b804dd5c08a4701e33b7df56af13e03734cb (diff)
downloadscala-0d359a148ea4e839ebce28b1593798e6902ef4aa.tar.gz
scala-0d359a148ea4e839ebce28b1593798e6902ef4aa.tar.bz2
scala-0d359a148ea4e839ebce28b1593798e6902ef4aa.zip
- Factored some code
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/symtab/Symbol.java10
-rw-r--r--sources/scalac/typechecker/Analyzer.java4
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");