diff options
author | Martin Odersky <odersky@gmail.com> | 2004-01-09 18:04:18 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-01-09 18:04:18 +0000 |
commit | 74a2351508b63734acd86f1b247696b093730e0e (patch) | |
tree | 97c5fb40c88cff5de3deda83a1e2ae47c8bf07a5 /sources/scalac/symtab | |
parent | 6a29f17c212f5980dea3e8973a024804b446ccdb (diff) | |
download | scala-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.java | 2 | ||||
-rw-r--r-- | sources/scalac/symtab/Type.java | 16 | ||||
-rw-r--r-- | sources/scalac/symtab/classfile/CLRPackageParser.java | 1 |
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); |