Skip to content

Varargs does not keep hardened union types #16818

Open
@soronpo

Description

@soronpo

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions