On Mon, 24 Apr 2023 12:53:59 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

> In this case, as long as the union type could only be present at the top 
> level (as opposed to e.g. a type of a record component), we could simply 
> require all components to be covered for union types for exhaustiveness in 
> `checkCovered`, no? We could do something different, if we had a good reason, 
> but enhancing `checkCovered` should be enough, and shouldn't be too difficult 
> (as long as the spec would say so). Do I miss something?

I believe that is a correct assessment. Technically speaking though, I'm not 
sure the JLS can be enhanced to do that - given that, as Remi reminded me, 
union types are not a thing. The _declaration_ of a union type parameter is a 
thing, but then the underlying declared type of the parameter is just the LUB. 
This means that the JLS can't track which expressions have union types. Note 
that saying stuff like `if the selector expression is a multi-catch parameter` 
won't work either, given that with `var` you can alias that on a different 
local. So, if things are not wired up a the type level (as it is currently the 
case), there's not much we can do I'm afraid.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13074#issuecomment-1520200078

Reply via email to