diff options
author | Martin Odersky <odersky@gmail.com> | 2003-09-02 12:57:45 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-09-02 12:57:45 +0000 |
commit | ec46a90f5cd17d5ed506201bdc0b0a55324dffae (patch) | |
tree | db322d9b07f1a8ae3417d757a22549039293e9fc /sources/scalac/symtab | |
parent | 3228df8eafa7a70792615356042b427595999b26 (diff) | |
download | scala-ec46a90f5cd17d5ed506201bdc0b0a55324dffae.tar.gz scala-ec46a90f5cd17d5ed506201bdc0b0a55324dffae.tar.bz2 scala-ec46a90f5cd17d5ed506201bdc0b0a55324dffae.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/symtab')
-rw-r--r-- | sources/scalac/symtab/Definitions.java | 4 | ||||
-rw-r--r-- | sources/scalac/symtab/Modifiers.java | 1 | ||||
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 11 | ||||
-rw-r--r-- | sources/scalac/symtab/Type.java | 6 | ||||
-rw-r--r-- | sources/scalac/symtab/classfile/JavaTypeCreator.java | 8 |
5 files changed, 15 insertions, 15 deletions
diff --git a/sources/scalac/symtab/Definitions.java b/sources/scalac/symtab/Definitions.java index ac4d38e261..7a33403004 100644 --- a/sources/scalac/symtab/Definitions.java +++ b/sources/scalac/symtab/Definitions.java @@ -361,13 +361,13 @@ public class Definitions { EQUALS = new TermSymbol( Position.NOPOS, Names.equals, ANY_CLASS, 0); - EQUALS.setInfo(Type.MethodType(new Symbol[]{newParameter(EQUALS, JAVA_OBJECT_TYPE)}, + EQUALS.setInfo(Type.MethodType(new Symbol[]{newParameter(EQUALS, ANY_TYPE)}, BOOLEAN_TYPE)); ANY_CLASS.members().enter(EQUALS); EQ = new TermSymbol( Position.NOPOS, Names.eq, ANY_CLASS, 0); - EQ.setInfo(Type.MethodType(new Symbol[]{newParameter(EQ, JAVA_OBJECT_TYPE)}, + EQ.setInfo(Type.MethodType(new Symbol[]{newParameter(EQ, ANY_TYPE)}, BOOLEAN_TYPE)); ANY_CLASS.members().enter(EQ); diff --git a/sources/scalac/symtab/Modifiers.java b/sources/scalac/symtab/Modifiers.java index e53bbd92d4..242e6c64ce 100644 --- a/sources/scalac/symtab/Modifiers.java +++ b/sources/scalac/symtab/Modifiers.java @@ -62,7 +62,6 @@ public interface Modifiers { int SOURCEFLAGS = 0x00000077 | DEF | REPEATED | MODUL | MUTABLE | PACKAGE | PARAM | TRAIT | COVARIANT | CONTRAVARIANT; // these modifiers can be set in source programs. int ACCESSFLAGS = PRIVATE | PROTECTED; int VARIANCES = COVARIANT | CONTRAVARIANT; - int OVERLOADFLAGS = DEFERRED | OVERRIDE | FINAL; public static class Helper { diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index ca36dfb663..e36dc1489e 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -977,13 +977,8 @@ public abstract class Symbol implements Modifiers, Kinds { assert isTerm() : Debug.show(this); assert this.name == that.name : Debug.show(this) + " <> " + Debug.show(that); assert this.owner == that.owner : Debug.show(this) + " != " + Debug.show(that); - assert (this.flags & that.flags & JAVA) != 0 || - (this.flags & OVERLOADFLAGS) == (that.flags & OVERLOADFLAGS) - : Integer.toHexString(this.flags) + "@" + Debug.show(this) + " <> " + Integer.toHexString(that.flags) + "@" + Debug.show(that); assert this.isConstructor() == that.isConstructor(); - int overflags = - ((this.flags | that.flags) & (JAVA | OVERLOADFLAGS)) | - (this.flags & that.flags & ACCESSFLAGS); + int overflags = this.flags & that.flags & (JAVA | ACCESSFLAGS); TermSymbol overloaded = (this.isConstructor()) ? TermSymbol.newConstructor(this.constructorClass(), overflags) : new TermSymbol(pos, name, owner, overflags); @@ -1062,8 +1057,8 @@ public abstract class Symbol implements Modifiers, Kinds { } } - /** The symbol which is overridden by this symbol in base class `base' - * `base' must be a superclass of this.owner(). + /** The symbol which overrides this symbol in subclass `sub' + * `sub' must be a subclass of this.owner(). */ public Symbol overridingSymbol(Type sub) { assert !isOverloaded() : this; diff --git a/sources/scalac/symtab/Type.java b/sources/scalac/symtab/Type.java index 339c09b38a..21fdf32917 100644 --- a/sources/scalac/symtab/Type.java +++ b/sources/scalac/symtab/Type.java @@ -1447,7 +1447,7 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { for (int i = 0; i < ps.length; i++) { Symbol p1 = ps1[i]; Symbol p = ps[i]; - if (!p1.type().isSubType(p.type()) || + if (!p1.type().isSameAs(p.type()) || (p1.flags & (Modifiers.DEF | Modifiers.REPEATED)) != (p.flags & (Modifiers.DEF | Modifiers.REPEATED))) return false; @@ -1461,8 +1461,8 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { case PolyType(Symbol[] ps, Type res): if (ps.length != ps1.length) return false; for (int i = 0; i < ps.length; i++) - if (!ps1[i].info().subst(ps1, ps).isSubType(ps[i].info()) || - !ps[i].loBound().isSubType(ps1[i].loBound().subst(ps1, ps))) + if (!ps1[i].info().subst(ps1, ps).isSameAs(ps[i].info()) || + !ps[i].loBound().isSameAs(ps1[i].loBound().subst(ps1, ps))) return false; return res.isSubType(res1.subst(ps1, ps)); } diff --git a/sources/scalac/symtab/classfile/JavaTypeCreator.java b/sources/scalac/symtab/classfile/JavaTypeCreator.java index 9ef282ba56..395778adec 100644 --- a/sources/scalac/symtab/classfile/JavaTypeCreator.java +++ b/sources/scalac/symtab/classfile/JavaTypeCreator.java @@ -72,10 +72,16 @@ public class JavaTypeCreator implements JavaTypeFactory { for (int i = 0; i < args.length; i++) { args[i] = new TermSymbol( Position.NOPOS, Name.fromString("x" + i), Symbol.NONE, Modifiers.PARAM); - args[i].setInfo(argtpes[i]); + args[i].setInfo(objToAny(argtpes[i])); } return new MethodType(args, restpe); } + private Type objToAny(Type tp) { + if (tp.isSameAs(global.definitions.JAVA_OBJECT_TYPE)) + return global.definitions.ANY_TYPE; + else + return tp; + } public Type packageType(Name packagename) { return null; |