summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/OverridingPairs.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-02-15 16:43:36 +0000
committerMartin Odersky <odersky@gmail.com>2009-02-15 16:43:36 +0000
commit266df9f05ecd11e67166e57cc58236646f2f50bb (patch)
tree6325a682f6b0d2101928a8eca047477f09e2db57 /src/compiler/scala/tools/nsc/transform/OverridingPairs.scala
parentf2032c958854476587f6e78668b16216a28dc9a8 (diff)
downloadscala-266df9f05ecd11e67166e57cc58236646f2f50bb.tar.gz
scala-266df9f05ecd11e67166e57cc58236646f2f50bb.tar.bz2
scala-266df9f05ecd11e67166e57cc58236646f2f50bb.zip
Fixed an ambiguity problem with implcits, and a...
Fixed an ambiguity problem with implcits, and a spurious cyclic reference error mentioned by Jorge. Tightened overriding checks (test case is new collection libraries).
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/OverridingPairs.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/OverridingPairs.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/OverridingPairs.scala b/src/compiler/scala/tools/nsc/transform/OverridingPairs.scala
index 9266515057..8f8d6a5bea 100644
--- a/src/compiler/scala/tools/nsc/transform/OverridingPairs.scala
+++ b/src/compiler/scala/tools/nsc/transform/OverridingPairs.scala
@@ -117,6 +117,7 @@ abstract class OverridingPairs {
* i = index(p)
* j = index(b)
* p isSubClass b
+ * p.baseType(b) == self.baseType(b)
*/
private val subParents = new Array[BitSet](size)
@@ -124,7 +125,11 @@ abstract class OverridingPairs {
subParents(i) = new BitSet(size);
for (p <- parents) {
val pIndex = index(p.typeSymbol)
- for (bc <- p.baseClasses) include(subParents(index(bc)), pIndex)
+ for (bc <- p.baseClasses)
+ if (p.baseType(bc) =:= self.baseType(bc))
+ include(subParents(index(bc)), pIndex)
+ else if (settings.debug.value)
+ log("SKIPPING "+p+" -> "+p.baseType(bc)+" / "+self.baseType(bc)+" from "+base)
}
}