diff options
author | Martin Odersky <odersky@gmail.com> | 2003-06-11 18:10:24 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-06-11 18:10:24 +0000 |
commit | da93e36d8f40d0484ad45182054814df34cb1595 (patch) | |
tree | ce7dae7d3d2896ed4489cc91506d0dbe5bcf4000 /sources/scalac/symtab | |
parent | 914d29f8895b39629b7f3887d7615cfab18dce57 (diff) | |
download | scala-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.java | 2 | ||||
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 13 |
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; |