summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-06-11 18:10:24 +0000
committerMartin Odersky <odersky@gmail.com>2003-06-11 18:10:24 +0000
commitda93e36d8f40d0484ad45182054814df34cb1595 (patch)
treece7dae7d3d2896ed4489cc91506d0dbe5bcf4000 /sources/scalac/symtab
parent914d29f8895b39629b7f3887d7615cfab18dce57 (diff)
downloadscala-da93e36d8f40d0484ad45182054814df34cb1595.tar.gz
scala-da93e36d8f40d0484ad45182054814df34cb1595.tar.bz2
scala-da93e36d8f40d0484ad45182054814df34cb1595.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/symtab')
-rw-r--r--sources/scalac/symtab/Scope.java2
-rw-r--r--sources/scalac/symtab/Symbol.java13
2 files changed, 13 insertions, 2 deletions
diff --git a/sources/scalac/symtab/Scope.java b/sources/scalac/symtab/Scope.java
index 6c707f43c4..64e06b61e6 100644
--- a/sources/scalac/symtab/Scope.java
+++ b/sources/scalac/symtab/Scope.java
@@ -183,7 +183,7 @@ public class Scope {
public Scope enterOrOverload(Symbol sym) {
Entry e = lookupEntry(sym.name);
- if (e.owner == this && (sym.flags & Modifiers.PRIVATE) == 0) {
+ if (e.owner == this/* && (sym.flags & Modifiers.PRIVATE) == 0*/) {
e.setSymbol(e.sym.overloadWith(sym));
return this;
} else {
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java
index 57e85283a4..f69506fc6d 100644
--- a/sources/scalac/symtab/Symbol.java
+++ b/sources/scalac/symtab/Symbol.java
@@ -871,6 +871,7 @@ public abstract class Symbol implements Modifiers, Kinds {
* `base' must be a superclass of this.owner().
*/
public Symbol overriddenSymbol(Type base) {
+ assert !isOverloaded() : this;
Symbol sym1 = base.lookupNonPrivate(name);
if (sym1.kind == Kinds.NONE || (sym1.flags & STATIC) != 0) {
return Symbol.NONE;
@@ -884,7 +885,7 @@ public abstract class Symbol implements Modifiers, Kinds {
switch (sym1type) {
case OverloadedType(Symbol[] alts, Type[] alttypes):
for (int i = 0; i < alts.length; i++) {
- if (symtype.isSameAs(alttypes[i])) return alts[i];
+ if (symtype.isSubType(alttypes[i])) return alts[i];
}
return Symbol.NONE;
default:
@@ -897,6 +898,16 @@ public abstract class Symbol implements Modifiers, Kinds {
}
}
+ /** Does this symbol override that symbol?
+ */
+ public boolean overrides(Symbol that) {
+ return
+ ((this.flags | that.flags) & (PRIVATE | STATIC)) == 0 &&
+ this.name == that.name &&
+ owner.thisType().memberType(this).isSubType(
+ owner.thisType().memberType(that));
+ }
+
public void reset(Type completer) {
this.flags &= (FINAL | MODUL);
this.pos = 0;