Open
Description
class P[R]
trait MyChangeListener[T] { def changed(observable: P[_ <: T]) }
class Test {
// type checks
def m[S]: MyChangeListener[_ >: S] = new MyChangeListener[S] { def changed(observable: P[_ <: S]): Unit = ??? }
// should type check too
def l[S]: MyChangeListener[_ >: S] = (observable: P[_ <: S]) => ???
}