object Main extends App { trait A { type T = Int } trait B { type T <: String } def f(b: B)(t: bT) = t.length @annotation.unchecked.uncheckedStable val x: A with B = null val y: xT = 0 // legal because x is A f(x)(y) } Now running... [info] Running Main java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
(Based on retronym's answer on Unable to override a type with an unstable upper bound .)
source share