Open
Description
case class Foo[T, TCollection <: Iterable[T]](collection: TCollection, name: String)
def doStuff[T, TCollection <: Iterable[T]](foo: Foo[T, TCollection]){
println(foo.name)
}
val foo = Foo[Int, Seq[Int]](Seq(1, 2), "foo")
doStuff(foo)
val bar = foo.copy(name = "bar")
doStuff(bar)
The code fails to compile on the last line, as T for bar has been erased to Nothing.