From scala/scala#9672 (comment)
trait C[+T]
trait D[T] extends C[T] {
def f(x: T): T
}
class E extends D[String] {
def f(x: String) = x.trim
}
object Test {
def foo[T](c: C[T], t: T): Any = c match {
case d: D[T] => d.f(t)
case _ => 0
}
def main(args: Array[String]): Unit = {
foo[Any](new E, 1)
}
}
Doesn't give an unchecked warning in Scala 2 (fixed in Scala 3) and runs into a CCE.