Given:
class Box[A]
trait T
class A extends T
class B extends T
val foo = Seq(new Box[A], new Box[B])
Obtained:
val foo: Seq[Box[_1] forSome { type _1 >: B with A <: T }] = Seq(new Box[A], new Box[B])
This will occur because Box is invariant.
Expected?:
val foo: Seq[Box[_ <: T]] = Seq(new Box[A], new Box[B])
i.e. we perhaps should expect something like _ <: LeastCommonAncestor. If that is AnyRef, maybe we should only ascribe Box[_].
Given:
Obtained:
This will occur because
Boxis invariant.Expected?:
i.e. we perhaps should expect something like
_ <: LeastCommonAncestor. If that isAnyRef, maybe we should only ascribeBox[_].