diff options
author | Martin Odersky <odersky@gmail.com> | 2006-04-03 09:18:19 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-04-03 09:18:19 +0000 |
commit | d1007862edf2f20a46a5395354991c63ede4abfa (patch) | |
tree | f5f2453236cc476f1bb65111ad97e9c52ac679cd /src | |
parent | 2b8d5f6485faec89410678834d25cce9656a7232 (diff) | |
download | scala-d1007862edf2f20a46a5395354991c63ede4abfa.tar.gz scala-d1007862edf2f20a46a5395354991c63ede4abfa.tar.bz2 scala-d1007862edf2f20a46a5395354991c63ede4abfa.zip |
Fixed abstract override problem detected by Moez
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Symbols.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Mixin.scala | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala index bf2685d466..112294ead3 100644 --- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala +++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala @@ -620,7 +620,7 @@ trait Symbols requires SymbolTable { * @param site The base type from which member types are computed */ final def matchingSymbol(ofclazz: Symbol, site: Type): Symbol = - ofclazz.info.nonPrivateDecl(name).suchThat(sym => + ofclazz.info.nonPrivateDecl(name).filter(sym => !sym.isTerm || (site.memberType(this) matches site.memberType(sym))); /** The symbol overridden by this symbol in given class `ofclazz' */ diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala index a52ff1e5f5..c7f9f775fd 100644 --- a/src/compiler/scala/tools/nsc/transform/Mixin.scala +++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala @@ -49,7 +49,7 @@ abstract class Mixin extends InfoTransform { val other = bcs.head.info.nonPrivateDecl(member.name); log("rebindsuper " + bcs.head + " " + other + " " + other.tpe + " " + other.hasFlag(DEFERRED)); } - sym = member.overridingSymbol(bcs.head).suchThat(sym => !sym.hasFlag(DEFERRED)); + sym = member.overridingSymbol(bcs.head).suchThat(sym => !sym.hasFlag(DEFERRED | BRIDGE)); bcs = bcs.tail } assert(sym != NoSymbol, member); |