Not since 2.9, it has always been like that.You couldn't do this without attaching the same variance restrictions which apply to type parameters. Because if Y1 looks like this
abstract class Y1 { type T <: A ; def f(x: T) = x }Then T, once fixed, must stay fixed.

Not since 2.9, it has always been like that.You couldn't do this without attaching the same variance restrictions which apply to type parameters. Because if Y1 looks like this
abstract class Y1 { type T <: A ; def f(x: T) = x }Then T, once fixed, must stay fixed.

Not since 2.9, it has always been like that.
You couldn't do this without attaching the same variance
restrictions which apply to type parameters. Because if Y1
looks like this
abstract class Y1 { type T <: A ; def f(x: T) = x }
Then T, once fixed, must stay fixed.

abstract class Y1 { type T <:= A ; def f(x: T) = x }
Using such T in invariant or contra-variant position would
effectively fix T to A. A warning should be issued.

This was a bit too rash... Thought about it on the way home, and
need some more, thanks.