diff options
author | Martin Odersky <odersky@gmail.com> | 2009-02-15 16:43:36 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-02-15 16:43:36 +0000 |
commit | 266df9f05ecd11e67166e57cc58236646f2f50bb (patch) | |
tree | 6325a682f6b0d2101928a8eca047477f09e2db57 /src/compiler/scala/tools/nsc/transform/OverridingPairs.scala | |
parent | f2032c958854476587f6e78668b16216a28dc9a8 (diff) | |
download | scala-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.scala | 7 |
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) } } |