summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/symtab')
-rw-r--r--sources/scalac/symtab/SourceCompleter.java2
-rw-r--r--sources/scalac/symtab/Symbol.java33
-rw-r--r--sources/scalac/symtab/classfile/ClassParser.java1
-rw-r--r--sources/scalac/symtab/classfile/ClassfileParser.java3
4 files changed, 28 insertions, 11 deletions
diff --git a/sources/scalac/symtab/SourceCompleter.java b/sources/scalac/symtab/SourceCompleter.java
index 1fe722abac..cf4938ccde 100644
--- a/sources/scalac/symtab/SourceCompleter.java
+++ b/sources/scalac/symtab/SourceCompleter.java
@@ -29,7 +29,7 @@ public class SourceCompleter extends Type.LazyType {
this.filename = filename;
}
- /** complete class symbol c by loading the class
+ /** complete class symbol c by loading the unit
*/
public void complete(Symbol c) {
if (completed) {
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java
index f6466931d7..980e11fd01 100644
--- a/sources/scalac/symtab/Symbol.java
+++ b/sources/scalac/symtab/Symbol.java
@@ -56,7 +56,7 @@ public abstract class Symbol implements Modifiers, Kinds {
/** The infos of the symbol */
private TypeIntervalList infos = TypeIntervalList.EMPTY;
- static int FIRST_ID = Global.POST_ANALYZER_PHASE_ID;
+ static public int FIRST_ID = Global.POST_ANALYZER_PHASE_ID;
// Constructors -----------------------------------------------------------
@@ -168,6 +168,10 @@ public abstract class Symbol implements Modifiers, Kinds {
// Symbol classification ----------------------------------------------------
+ public final boolean isDefined() {
+ return !(rawInfoAt(FIRST_ID) instanceof Type.LazyType);
+ }
+
/** Does this symbol denote a type? */
public final boolean isType() {
return kind == TYPE || kind == CLASS || kind == ALIAS;
@@ -961,17 +965,25 @@ public class TermSymbol extends Symbol {
return newConstructor(clazz, clazz.flags & (ACCESSFLAGS | JAVA));
}
- public static TermSymbol newModule(int pos, Name name, Symbol owner, int flags) {
+ public static TermSymbol newModule(int pos, Name name, Symbol owner,
+ int flags, ClassSymbol clazz) {
TermSymbol sym = new TermSymbol(pos, name, owner, flags | MODUL | FINAL);
- Symbol clazz = new ClassSymbol(
- pos, name.toTypeName(), owner, flags | MODUL | FINAL, sym);
- clazz.constructor().setInfo(
- Type.MethodType(Symbol.EMPTY_ARRAY, clazz.typeConstructor()));
sym.clazz = clazz;
+ clazz.setModule(sym);
sym.setInfo(clazz.typeConstructor());
return sym;
}
+ public static TermSymbol newModule(int pos, Name name, Symbol owner,
+ int flags) {
+ ClassSymbol clazz = new ClassSymbol(
+ pos, name.toTypeName(), owner, flags | MODUL | FINAL);
+ clazz.constructor().setInfo(
+ Type.MethodType(Symbol.EMPTY_ARRAY, clazz.typeConstructor()));
+
+ return newModule(pos, name, owner, flags, clazz);
+ }
+
/** Constructor for companion modules to classes, which need to be completed.
*/
public static TermSymbol newCompanionModule(Symbol clazz, int flags, Type.LazyType parser) {
@@ -1257,11 +1269,11 @@ public class ClassSymbol extends TypeSymbol {
}
/** Constructor for module classes and classes with static members.
- */
public ClassSymbol(int pos, Name name, Symbol owner, int flags, Symbol module) {
this(pos, name, owner, flags);
this.module = module;
}
+ */
/** Constructor for classes to load as source files
*/
@@ -1282,7 +1294,8 @@ public class ClassSymbol extends TypeSymbol {
/** Return a fresh symbol with the same fields as this one.
*/
public Symbol cloneSymbol(Symbol owner) {
- ClassSymbol other = new ClassSymbol(pos, name, owner, flags, module);
+ ClassSymbol other = new ClassSymbol(pos, name, owner, flags);
+ other.module = module;
other.setInfo(info());
other.constructor.setInfo(
fixClonedConstrType(
@@ -1320,6 +1333,10 @@ public class ClassSymbol extends TypeSymbol {
return module;
}
+ /** Set module; only used internally from TermSymbol
+ */
+ void setModule(Symbol module) { this.module = module; }
+
/** Set the mangled name of this Symbol */
public Symbol setMangledName(Name name) {
this.mangled = name;
diff --git a/sources/scalac/symtab/classfile/ClassParser.java b/sources/scalac/symtab/classfile/ClassParser.java
index 6f3a5605db..5ebf85e774 100644
--- a/sources/scalac/symtab/classfile/ClassParser.java
+++ b/sources/scalac/symtab/classfile/ClassParser.java
@@ -19,6 +19,7 @@ public class ClassParser extends Type.LazyType {
/** the global compilation environment
*/
protected Global global;
+ private boolean completed = false;
public ClassParser(Global global) {
this.global = global;
diff --git a/sources/scalac/symtab/classfile/ClassfileParser.java b/sources/scalac/symtab/classfile/ClassfileParser.java
index ae08c390e3..2272b6dc21 100644
--- a/sources/scalac/symtab/classfile/ClassfileParser.java
+++ b/sources/scalac/symtab/classfile/ClassfileParser.java
@@ -226,8 +226,7 @@ public class ClassfileParser implements ClassfileConstants {
transFlags(flags));
s.setInfo(type, phaseId);
attrib.readAttributes(s, type, METH_ATTR);
- if (!s.isPrivate()) // Don't include PRIVATE methods
- ((flags & 0x0008) != 0 ? statics : locals).enterOrOverload(s);
+ ((flags & 0x0008) != 0 ? statics : locals).enterOrOverload(s);
}
}
}