summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-01-09 18:04:18 +0000
committerMartin Odersky <odersky@gmail.com>2004-01-09 18:04:18 +0000
commit74a2351508b63734acd86f1b247696b093730e0e (patch)
tree97c5fb40c88cff5de3deda83a1e2ae47c8bf07a5 /sources/scalac/symtab
parent6a29f17c212f5980dea3e8973a024804b446ccdb (diff)
downloadscala-74a2351508b63734acd86f1b247696b093730e0e.tar.gz
scala-74a2351508b63734acd86f1b247696b093730e0e.tar.bz2
scala-74a2351508b63734acd86f1b247696b093730e0e.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/symtab')
-rw-r--r--sources/scalac/symtab/Definitions.java2
-rw-r--r--sources/scalac/symtab/Type.java16
-rw-r--r--sources/scalac/symtab/classfile/CLRPackageParser.java1
3 files changed, 12 insertions, 7 deletions
diff --git a/sources/scalac/symtab/Definitions.java b/sources/scalac/symtab/Definitions.java
index 79db92a581..8c59358a5e 100644
--- a/sources/scalac/symtab/Definitions.java
+++ b/sources/scalac/symtab/Definitions.java
@@ -491,7 +491,7 @@ public class Definitions {
DOUBLE_CLASS = getClass(Names.scala_Double);
// the scala reference classes
- OBJECT_CLASS = getClass(Names.scala_Object);
+ OBJECT_CLASS = getClass(Names.scala_ScalaObject);
STRING_CLASS = newAlias(SCALA_PACKAGE, Names.String, 0);
REF_CLASS = getClass(Names.scala_Ref);
for (int i = 1; i < TUPLE_COUNT; i++) {
diff --git a/sources/scalac/symtab/Type.java b/sources/scalac/symtab/Type.java
index f0d4a7ce1f..b8b03a9ffb 100644
--- a/sources/scalac/symtab/Type.java
+++ b/sources/scalac/symtab/Type.java
@@ -754,7 +754,8 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags {
}
/** Is this type of the form scala.FunctionN[T_1, ..., T_n, +T] or
- * scala.Object with scala.FunctionN[T_1, ..., T_n, +T]?
+ * scala.AnyRef with scala.FunctionN[T_1, ..., T_n, +T] or
+ * java.lang.Object with scala.FunctionN[T_1, ..., T_n, +T]?
*/
public boolean isFunctionType() {
switch (this) {
@@ -764,7 +765,8 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags {
case CompoundType(Type[] parents, Scope members):
return members.isEmpty() &&
parents.length == 2 &&
- parents[0].symbol().fullName() == Names.scala_Object &&
+ (parents[0].symbol().fullName() == Names.java_lang_Object ||
+ parents[0].symbol().fullName() == Names.scala_AnyRef) &&
parents[1].isFunctionType();
}
return false;
@@ -850,13 +852,17 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags {
// take precedence over abstract ones.
int i = parts.length;
sym = Symbol.NONE;
- while (i > 0 && (sym.kind == NONE || (sym.flags & DEFERRED) != 0)) {
+ while (i > 0) {
i--;
Symbol sym1 = parts[i].lookupNonPrivate(name);
if (sym1.kind != NONE &&
(sym1.flags & PRIVATE) == 0 &&
- (sym.kind == NONE ||
- (sym1.flags & DEFERRED) == 0 ||
+ (sym.kind == NONE
+ ||
+ (sym.flags & DEFERRED) != 0 &&
+ (sym1.flags & DEFERRED) == 0
+ ||
+ (sym.flags & DEFERRED) == (sym1.flags & DEFERRED) &&
sym1.owner().isSubClass(sym.owner())))
sym = sym1;
}
diff --git a/sources/scalac/symtab/classfile/CLRPackageParser.java b/sources/scalac/symtab/classfile/CLRPackageParser.java
index bf2e6971e2..3197389979 100644
--- a/sources/scalac/symtab/classfile/CLRPackageParser.java
+++ b/sources/scalac/symtab/classfile/CLRPackageParser.java
@@ -246,7 +246,6 @@ public class CLRPackageParser extends MetadataParser {
clazz.allConstructors().setInfo(completer.staticsParser(clazz));
clazz.module().setInfo(completer.staticsParser(clazz));
members.enter(clazz);
- // ATTENTION: only if not scala.Object!
Scope.Entry e = members.lookupEntry(clazz.module().name);
if (e != Scope.Entry.NONE)
members.unlink(e);