Open
Description
It really depends how we specify it, but we could look at the union derived from varargs as hardened.
Compiler version
v3.3.0-RC2
Minimized code
class Foo
class U1 extends Foo
class U2 extends Foo
class U3 extends Foo
class U4 extends Foo
type U = U1 | U2
val u : U1 | U2 = ???
type U34 = U3 | U4
val u34 : U3 | U4 = ???
class Boxx[T](x: T*)
val b123 = Boxx(u, u34)
val b123Test: Boxx[U | U34] = b123 //error
Output
Found: (b123 : Boxx[Foo])
Required: Boxx[U | U34]
Expectation
No error.