summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/typechecker/RefChecks.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-11-22 12:26:05 +0000
committerMartin Odersky <odersky@gmail.com>2005-11-22 12:26:05 +0000
commitd4de06d53a1dcd678ea8051fc29555bad0300a16 (patch)
tree3a822cb16fc7b12a0bbf831d5bd3c5d98e07cb57 /sources/scala/tools/nsc/typechecker/RefChecks.scala
parent12c007cda6ff4d6b902efbfef18a057370bcd86e (diff)
downloadscala-d4de06d53a1dcd678ea8051fc29555bad0300a16.tar.gz
scala-d4de06d53a1dcd678ea8051fc29555bad0300a16.tar.bz2
scala-d4de06d53a1dcd678ea8051fc29555bad0300a16.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/typechecker/RefChecks.scala')
-rwxr-xr-xsources/scala/tools/nsc/typechecker/RefChecks.scala6
1 files changed, 4 insertions, 2 deletions
diff --git a/sources/scala/tools/nsc/typechecker/RefChecks.scala b/sources/scala/tools/nsc/typechecker/RefChecks.scala
index b6becf5972..4bb8091e53 100755
--- a/sources/scala/tools/nsc/typechecker/RefChecks.scala
+++ b/sources/scala/tools/nsc/typechecker/RefChecks.scala
@@ -249,7 +249,9 @@ abstract class RefChecks extends InfoTransform {
// 3. Check that every defined member with an `override' modifier overrides some other member.
for (val member <- clazz.info.decls.toList)
if ((member hasFlag (OVERRIDE | ABSOVERRIDE)) &&
- (clazz.info.baseClasses.tail forall (bc => member.overriddenSymbol(bc) == NoSymbol))) {
+ (clazz.info.baseClasses.tail forall {
+ bc => member.matchingSymbol(bc, clazz.thisType) == NoSymbol
+ })) {
// for (val bc <- clazz.info.baseClasses.tail) System.out.println("" + bc + " has " + bc.info.decl(member.name) + ":" + bc.info.decl(member.name).tpe);//DEBUG
unit.error(member.pos, member.toString() + " overrides nothing");
member resetFlag OVERRIDE
@@ -550,7 +552,7 @@ abstract class RefChecks extends InfoTransform {
case Super(qualifier, mixin) =>
val base = currentOwner.enclClass;
if (sym hasFlag DEFERRED) {
- val member = sym.overridingSymbol(base);
+ val member = sym.overridingSymbol(base);//???
if (mixin != nme.EMPTY.toTypeName || member == NoSymbol ||
!((member hasFlag ABSOVERRIDE) && member.isIncompleteIn(base)))
unit.error(tree.pos, "symbol accessed from super may not be abstract");