File tree 2 files changed +19
-5
lines changed
compiler/src/dotty/tools/dotc/transform 2 files changed +19
-5
lines changed Original file line number Diff line number Diff line change @@ -626,11 +626,13 @@ object Erasure extends TypeTestsCasts{
626
626
627
627
if (isRequired) {
628
628
// check for clashes
629
- val clash : Option [Symbol ] = oldSymbol.owner.info.decls.lookupAll(bridge.name).find {
630
- sym =>
631
- (sym.name eq bridge.name) && sym.info.widen =:= bridge.info.widen
632
- }.orElse(
633
- emittedBridges.find(stat => (stat.name == bridge.name) && stat.tpe.widen =:= bridge.info.widen)
629
+ val clash : Option [Symbol ] = oldSymbol.owner.info.memberExcluding(bridge.name, Flags .Bridge ).alternatives.find {
630
+ denot => {
631
+ val sym = denot.symbol
632
+ ! sym.owner.is(Flags .Trait ) && (sym.owner ne bridge.owner) && sym.info.widen =:= bridge.info.widen
633
+ }
634
+ }.map(_.symbol).orElse(
635
+ emittedBridges.find(stat => (stat.name eq bridge.name) && stat.tpe.widen =:= bridge.info.widen)
634
636
.map(_.symbol))
635
637
clash match {
636
638
case Some (cl) =>
Original file line number Diff line number Diff line change
1
+ // nopos-error
2
+ class A {
3
+ def compareTo (o : Any ): Int = 0
4
+ }
5
+ class B extends A with Comparable [B ] {
6
+ def compareTo (b : B ): Int = 0
7
+ }
8
+ object C {
9
+ def main (args : Array [String ]): Unit = {
10
+ println(new B ().compareTo(new Object ()))
11
+ }
12
+ }
You can’t perform that action at this time.
0 commit comments