object tan extends UFunc { implicit def ImplDouble: Impl[Double, Double] = ??? } trait UFunc { trait TC[+A] type Impl[V, VR] = UFunc.UImpl[this.type, V, VR] } object UFunc { class UImpl[A, B, C] implicit def implicitDoubleUTag[Tag, V, VR](implicit conv: V=>Double, impl: UImpl[Tag, Double, VR]):UImpl[Tag, V, VR] = ??? } object Test { implicitly[tan.Impl[Double, Double]] // we should discard the one and only divergent implicit (`implicitDoubleUTag`) // This is done under `scalac-hash v2.10.4 test.scala`, but not under // `scalac-hash v2.10.4 -Xdivergence211 test.scala` // // This seems to be because the companion implicits contain redundant entries // }