summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorGeoffrey Washburn <geoffrey.washburn@epfl.ch>2008-04-17 14:07:00 +0000
committerGeoffrey Washburn <geoffrey.washburn@epfl.ch>2008-04-17 14:07:00 +0000
commit2df4b46fb7bec5c04ec10a99ffa265c3e56b5b54 (patch)
tree6855a34005d8e2ee4896b21cf00a0d6425517d38 /src/compiler/scala/tools/nsc/typechecker/Namers.scala
parent414ab99028b119f2a696acc81c5f49f9c9091de4 (diff)
downloadscala-2df4b46fb7bec5c04ec10a99ffa265c3e56b5b54.tar.gz
scala-2df4b46fb7bec5c04ec10a99ffa265c3e56b5b54.tar.bz2
scala-2df4b46fb7bec5c04ec10a99ffa265c3e56b5b54.zip
Don't make a virtual class its own parent.
I think we want overridden virtual parents to be of the form (Virtual.owner).this.Virtual not Virtual.this.Virtual
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index 8d775ba756..6228429f98 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -533,9 +533,10 @@ trait Namers { self: Analyzer =>
if (parents exists (_.typeSymbol.isVirtualClass))
clazz setFlag DEFERRED
// add overridden virtuals to parents
- if (clazz.isVirtualClass)
- parents = parents ::: (clazz.overriddenVirtuals map (
- TypeRef(clazz.thisType, _, clazz.typeParams map (_.tpe))))
+ if (clazz.isVirtualClass) {
+ parents = parents ::: ((clazz.overriddenVirtuals.filter(_ != clazz)) map (
+ sym => TypeRef(sym.owner.thisType, sym, clazz.typeParams map (_.tpe))))
+ }
// add apply and unapply methods to companion objects of case classes,
// unless they exist already
caseClassOfModuleClass get clazz match {