summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-03-09 22:15:58 +0000
committerpaltherr <paltherr@epfl.ch>2004-03-09 22:15:58 +0000
commit1e478c2c6e842e2f857f72ec8e25fcac7f694e59 (patch)
tree782ede821943c1371d59365e8bd8a162f059f02f
parent8f6a248aced0a0c27131b509174301b63fb62017 (diff)
downloadscala-1e478c2c6e842e2f857f72ec8e25fcac7f694e59.tar.gz
scala-1e478c2c6e842e2f857f72ec8e25fcac7f694e59.tar.bz2
scala-1e478c2c6e842e2f857f72ec8e25fcac7f694e59.zip
- Removed unused method Symbol.enclToplevelClass
- Added method Symbol.isPackageClass - Changed method Symbol.isPackage to return true only for terms
-rw-r--r--sources/scala/tools/scalac/typechecker/Analyzer.scala14
-rwxr-xr-xsources/scala/tools/scaladoc/MLType.scala2
-rw-r--r--sources/scala/tools/scaladoc/ScalaSearch.java14
-rw-r--r--sources/scala/tools/scaladoc/SymbolTablePrinterFactory.java2
-rw-r--r--sources/scalac/backend/msil/TypeCreator.java2
-rw-r--r--sources/scalac/symtab/Symbol.java18
-rw-r--r--sources/scalac/symtab/SymbolNameWriter.java2
-rw-r--r--sources/scalac/transformer/ExpandMixinsPhase.java3
-rw-r--r--sources/scalac/transformer/ExplicitOuterClassesPhase.java20
9 files changed, 34 insertions, 43 deletions
diff --git a/sources/scala/tools/scalac/typechecker/Analyzer.scala b/sources/scala/tools/scalac/typechecker/Analyzer.scala
index b3474c178e..e0a76fbf13 100644
--- a/sources/scala/tools/scalac/typechecker/Analyzer.scala
+++ b/sources/scala/tools/scalac/typechecker/Analyzer.scala
@@ -735,7 +735,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
if (global.debug) global.log("redefined: " + sym + ":" + sym.rawInfo());
} else if (e.owner == context.scope) {
assert(!other.isExternal(), other);
- if (sym.owner().isPackage()) {
+ if (sym.owner().isPackageClass()) {
if (global.compiledNow.get(other) != null) {
error(sym.pos, "" + sym + " is compiled twice");
}
@@ -756,7 +756,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
} else {
context.scope.enter(sym);
}
- if (sym.owner().isPackage())
+ if (sym.owner().isPackageClass())
global.compiledNow.put(sym, unit.source);
}
@@ -868,7 +868,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
clazz.isModuleClass() ||
clazz.isAnonymousClass() ||
clazz.isCompoundSym() ||
- clazz.isPackage()) {
+ clazz.isPackageClass()) {
error(tree.pos, "constructor definition not allowed here");
}
sym = context.enclClass.owner.addConstructor();
@@ -1511,7 +1511,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
} else {
if (sym.owner().kind == CLASS) {
pre = nextcontext.enclClass.owner.thisType();
- if (!sym.owner().isPackage()) {
+ if (!sym.owner().isPackageClass()) {
val qual1: Tree = gen.This(tree.pos, nextcontext.enclClass.owner);
tree = make.Select(tree.pos, qual1, name);
//System.out.println(name + " :::> " + tree + " " + qual1.symbol());//DEBUG
@@ -1548,7 +1548,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
.asSeenFrom(pre, sym.owner());
if (qual != Tree.Empty)
symtype = checkAccessible(tree.pos, sym, symtype, qual, qual.getType());
- else if (sym.owner().isPackage())
+ else if (sym.owner().isPackageClass())
symtype = checkAccessible(tree.pos, sym, symtype, qual, sym.owner().getType());
if (symtype == Type.NoType)
return error(tree.pos, "not found: " + decode(name));
@@ -2475,7 +2475,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
val fn0: Tree = fn1;
fn1 = gen.mkRef(fn1.pos, pre, constr);
var enclClassOrConstructorContext = Context.NONE;
- if (constr.owner().isPackage()) {
+ if (constr.owner().isPackageClass()) {
var c = context;
while (c != Context.NONE &&
!c.tree.isInstanceOf[Tree$ClassDef] &&
@@ -2489,7 +2489,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
fn1.setType(checkAccessible(
fn1.pos, constr, fn1.getType(), fn1qual, fn1qual.getType()));
case _ =>
- if (constr.owner().isPackage())
+ if (constr.owner().isPackageClass())
fn1.setType(checkAccessible(
fn1.pos, constr, fn1.getType(), Tree.Empty, constr.owner().getType()));
}
diff --git a/sources/scala/tools/scaladoc/MLType.scala b/sources/scala/tools/scaladoc/MLType.scala
index 071bb1cfde..3f59dc502e 100755
--- a/sources/scala/tools/scaladoc/MLType.scala
+++ b/sources/scala/tools/scaladoc/MLType.scala
@@ -618,7 +618,7 @@ package scala.tools.scaladoc {
found.add(result)
}
}
- if (member.symbol.isPackage() || member.symbol.isModule())
+ if (member.symbol.isPackage() || member.symbol.isPackageClass() || member.symbol.isModule())
searchInModule(member)
}
}
diff --git a/sources/scala/tools/scaladoc/ScalaSearch.java b/sources/scala/tools/scaladoc/ScalaSearch.java
index 46450dc41f..6e8652cf32 100644
--- a/sources/scala/tools/scaladoc/ScalaSearch.java
+++ b/sources/scala/tools/scaladoc/ScalaSearch.java
@@ -47,7 +47,7 @@ public class ScalaSearch {
/** Test if the given symbol is a class, a package, or an object.
*/
static boolean isContainer(Symbol sym) {
- return sym.isClass() || sym.isModule() || sym.isPackage();
+ return sym.isClass() || sym.isModule() || sym.isPackage() || sym.isPackageClass();
}
/** Test if the given symbol has a lazy type.
@@ -79,7 +79,7 @@ public class ScalaSearch {
* contain static fields and methods of a java class.
*/
public static boolean isEmptyJavaModule(Symbol sym) {
- return sym.isModule() && sym.isJava() && !sym.isPackage() && (members(sym).length == 0);
+ return sym.isModule() && sym.isJava() && !(sym.isPackage() || sym.isPackageClass()) && (members(sym).length == 0);
}
/** Test if the given symbol is access method for a val.
@@ -92,7 +92,7 @@ public class ScalaSearch {
*/
public static boolean isRelevant(Symbol sym) {
return !isGenerated(sym) && !isLazy(sym) && !isPrivate(sym) &&
- !(sym.isPackage() && sym.isClass()) && !sym.isConstructor() &&
+ !sym.isConstructor() &&
!sym.isCaseFactory() && !isEmptyJavaModule(sym);
}
@@ -275,7 +275,7 @@ public class ScalaSearch {
foreach(root,
new SymFun() {
public void apply(Symbol sym) {
- if (sym.isPackage())
+ if (sym.isPackage() || sym.isPackageClass())
packagesAcc.add(sym);
}
}, isDocumented);
@@ -295,7 +295,7 @@ public class ScalaSearch {
traitsAcc.add(sym);
else if (sym.isClass() && !sym.isModuleClass())
classesAcc.add(sym);
- else if (sym.isModule() && !sym.isPackage())
+ else if (sym.isModule() && !(sym.isPackage() || sym.isPackageClass()))
objectsAcc.add(sym);
}
}, isDocumented
@@ -320,7 +320,7 @@ public class ScalaSearch {
Symbol sym = syms[i];
if (sym.isTrait()) traits.add(sym);
else if (sym.isClass()) classes.add(sym);
- else if (sym.isPackage()) packages.add(sym);
+ else if (sym.isPackage() || sym.isPackageClass()) packages.add(sym);
else if (sym.isModule()) objects.add(sym);
else if (sym.isMethod() && !isValMethod(sym)) methods.add(sym);
else fields.add(sym);
@@ -339,7 +339,7 @@ public class ScalaSearch {
Iterator i = symbols.iterator();
while (i.hasNext()) {
Symbol sym = (Symbol) i.next();
- if (sym.isPackage() || sym.isModule())
+ if (sym.isPackage() || sym.isPackageClass() || sym.isModule())
modules.add(sym);
else if (sym.isTerm())
fields.add(sym);
diff --git a/sources/scala/tools/scaladoc/SymbolTablePrinterFactory.java b/sources/scala/tools/scaladoc/SymbolTablePrinterFactory.java
index 80fd0d3ec7..76e878c985 100644
--- a/sources/scala/tools/scaladoc/SymbolTablePrinterFactory.java
+++ b/sources/scala/tools/scaladoc/SymbolTablePrinterFactory.java
@@ -98,7 +98,7 @@ class SymbolTablePrinterFactory {
switch(prefix) {
case ThisType(Symbol sym):
- if (sym.isPackage() && isDocumented.apply(sym.module()))
+ if (sym.isPackageClass() && isDocumented.apply(sym.module()))
return null;
else if (isDocumented.apply(sym))
return null;
diff --git a/sources/scalac/backend/msil/TypeCreator.java b/sources/scalac/backend/msil/TypeCreator.java
index 312897810a..bc06a9111a 100644
--- a/sources/scalac/backend/msil/TypeCreator.java
+++ b/sources/scalac/backend/msil/TypeCreator.java
@@ -540,7 +540,7 @@ final class TypeCreator {
for (int i = 1; i < inum; i++)
interfaces[i - 1] = getType(baseTypes[i].symbol());
}
- if (owner.isRoot() || owner.isPackage()) { // i.e. top level class
+ if (owner.isRoot() || owner.isPackageClass()) { // i.e. top level class
type = module.DefineType
(typeName, translateTypeAttributes(clazz.flags, false),
superType, interfaces);
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java
index d5785891d3..eacfdf0310 100644
--- a/sources/scalac/symtab/Symbol.java
+++ b/sources/scalac/symtab/Symbol.java
@@ -434,7 +434,12 @@ public abstract class Symbol implements Modifiers, Kinds {
/** Does this symbol denote a Java package? */
public final boolean isPackage() {
- return (flags & PACKAGE) != 0;
+ return kind == VAL && (flags & PACKAGE) != 0;
+ }
+
+ /** Does this symbol denote a Java package class? */
+ public final boolean isPackageClass() {
+ return kind == CLASS && (flags & PACKAGE) != 0;
}
/** Does this symbol denote a module? */
@@ -716,17 +721,6 @@ public abstract class Symbol implements Modifiers, Kinds {
return isMethod() ? this : owner().enclMethod();
}
- /** The top-level class enclosing `sym'
- */
- Symbol enclToplevelClass() {
- Symbol sym = this;
- while (sym.kind == VAL ||
- (sym.kind == CLASS && !sym.owner().isPackage())) {
- sym = sym.owner();
- }
- return sym;
- }
-
/** If this is a constructor, return the class it constructs.
* Otherwise return the symbol itself.
*/
diff --git a/sources/scalac/symtab/SymbolNameWriter.java b/sources/scalac/symtab/SymbolNameWriter.java
index 0a272664e8..2a9b5ccb04 100644
--- a/sources/scalac/symtab/SymbolNameWriter.java
+++ b/sources/scalac/symtab/SymbolNameWriter.java
@@ -223,7 +223,7 @@ public class SymbolNameWriter {
if (owner.isRoot()) return root;
if (owner.isNone()) return none;
if (owner.isError()) return error;
- if (owner.isPackage()) return peckage;
+ if (owner.isPackageClass()) return peckage;
if (owner.isClass()) return symbol.isClass() ? clasz : member;
return other;
}
diff --git a/sources/scalac/transformer/ExpandMixinsPhase.java b/sources/scalac/transformer/ExpandMixinsPhase.java
index 68796b5996..07e514fcfc 100644
--- a/sources/scalac/transformer/ExpandMixinsPhase.java
+++ b/sources/scalac/transformer/ExpandMixinsPhase.java
@@ -100,14 +100,11 @@ public class ExpandMixinsPhase extends Phase {
/** Applies this phase to the given type for the given symbol. */
public Type transformInfo(Symbol symbol, Type type) {
- Symbol s = symbol;
while (true) {
if (symbol.isJava()) return type;
- if (symbol.isPackage()) return type;
if (symbol.isInterface()) return type;
if (symbol.isCompoundSym()) return type; // !!! check
if (symbol.isClass()) {
- // !!! System.out.println(Debug.show("!!! ", s, " -> ", symbol, " - ", getTypeExpander(symbol).clasz, " : " + type));
return getTypeExpander(symbol).apply(type);
}
symbol = symbol.isConstructor()
diff --git a/sources/scalac/transformer/ExplicitOuterClassesPhase.java b/sources/scalac/transformer/ExplicitOuterClassesPhase.java
index 5ddda74792..0b32029ef4 100644
--- a/sources/scalac/transformer/ExplicitOuterClassesPhase.java
+++ b/sources/scalac/transformer/ExplicitOuterClassesPhase.java
@@ -75,9 +75,9 @@ public class ExplicitOuterClassesPhase extends Phase {
/** Applies this phase to the given type for the given symbol. */
public Type transformInfo(Symbol symbol, Type type) {
- if (show && !symbol.isPackage()) System.out.println("!!! <<< transformInfo - symbol: " + Debug.show(symbol));
- if (show && !symbol.isPackage()) System.out.println("!!! <<< transformInfo - type : " + Debug.show(type));
- if (symbol.isPackage()) return type; // !!!
+ if (show && !symbol.isPackageClass()) System.out.println("!!! <<< transformInfo - symbol: " + Debug.show(symbol));
+ if (show && !symbol.isPackageClass()) System.out.println("!!! <<< transformInfo - type : " + Debug.show(type));
+ if (symbol.isPackageClass()) return type; // !!!
TypeContext context = getTypeContextFor(symbol);
if (symbol.isConstructor() && symbol.constructorClass().isClassType()) { // !!! isClassType -> isClass ?
Symbol clasz = symbol.constructorClass();
@@ -106,8 +106,8 @@ public class ExplicitOuterClassesPhase extends Phase {
type = context.transformer.apply(type);
assert type != null: Debug.show(symbol) + " -- " + t;
}
- if (show && !symbol.isPackage()) System.out.println("!!! >>> transformInfo - symbol: " + Debug.show(symbol));
- if (show && !symbol.isPackage()) System.out.println("!!! >>> transformInfo - type : " + Debug.show(type));
+ if (show && !symbol.isPackageClass()) System.out.println("!!! >>> transformInfo - symbol: " + Debug.show(symbol));
+ if (show && !symbol.isPackageClass()) System.out.println("!!! >>> transformInfo - type : " + Debug.show(type));
return type;
}
@@ -204,7 +204,7 @@ public class ExplicitOuterClassesPhase extends Phase {
for (int o = 0; o < context.outers.length - 1; o++) {
if (!context.outers[o].isStable)
types[--p] = prefix;
- else if (context.outers[o].clasz.isPackage()) break;
+ else if (context.outers[o].clasz.isPackageClass()) break;
Type base = prefix.baseType(context.outers[o].clasz);
assert base.symbol() == context.outers[o].clasz:
prefix + " -- " + Debug.show(clasz) + " -- " + context.outers[o].clasz + " -- " + base;
@@ -248,7 +248,7 @@ public class ExplicitOuterClassesPhase extends Phase {
/** !!! */
public TypeContext(Symbol clasz, TypeContext[] outers, Symbol[] tlinks, Symbol vlink, Symbol[] oldtparams, Map tparams) {
this.clasz = clasz;
- this.isStable = clasz.isPackage() || (clasz.isModuleClass() && vlink == null);
+ this.isStable = clasz.isPackageClass() || (clasz.isModuleClass() && vlink == null);
this.outers = outers;
this.tlinks = tlinks;
this.vlink = vlink;
@@ -309,7 +309,7 @@ public class ExplicitOuterClassesPhase extends Phase {
prefix = Type.NoPrefix;
return Type.typeRef(prefix, symbol, args);
}
- if (symbol.isPackage()) {
+ if (symbol.isPackageClass()) {
args = Type.EMPTY_ARRAY;
prefix = Type.NoPrefix;
return Type.typeRef(prefix, symbol, args);
@@ -525,11 +525,11 @@ public class ExplicitOuterClassesPhase extends Phase {
tcontext = context.context.outers[i];
assert tcontext != null: Debug.show(clasz, " -- ", context.clasz);
if (tcontext.isStable) {
- if (!clasz.owner().isPackage()) {
+ if (!clasz.owner().isPackageClass()) {
Tree qualifier = genOuterRef(pos,tcontext.outers[0].clasz);
return gen.Select(pos, qualifier, clasz.module());
} else {
- assert clasz.owner().isPackage(): Debug.show(clasz);
+ assert clasz.owner().isPackageClass(): Debug.show(clasz);
return gen.Ident(pos, clasz.module());
}
} else {