summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-09-02 12:57:45 +0000
committerMartin Odersky <odersky@gmail.com>2003-09-02 12:57:45 +0000
commitec46a90f5cd17d5ed506201bdc0b0a55324dffae (patch)
treedb322d9b07f1a8ae3417d757a22549039293e9fc /sources/scalac/symtab
parent3228df8eafa7a70792615356042b427595999b26 (diff)
downloadscala-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.java4
-rw-r--r--sources/scalac/symtab/Modifiers.java1
-rw-r--r--sources/scalac/symtab/Symbol.java11
-rw-r--r--sources/scalac/symtab/Type.java6
-rw-r--r--sources/scalac/symtab/classfile/JavaTypeCreator.java8
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;