Fw: JEP 455: Non-enhanced switch statements

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Oct 27 14:37:25 UTC 2023


No disagreement here. But I'd still point out that I'd rather see 
exhaustiveness being associated with the type being switched on, rather 
than on whether the switch body happens to use certain features or not.

For sealed types we're lucky, because switching on them wasn't possible 
before - so if those get exhaustive, fine.

But I'm not sure making a switch statement on e.g. an Object selector 
exhaustive simply because it's a "new form" is necessarily useful? I 
think exhaustiveness is the most useful when there's a fixed amount of 
things to check.

Maurizio

On 27/10/2023 15:33, Brian Goetz wrote:
>
>> Sure - but this logic is only applied to switch expression featuring 
>> enums AFAIK - switch statements with enums are non-exhaustive (and I 
>> think that will have to stay that way).
>
> Slight correction: switch statements on enum selectors *that don't use 
> patterns or guards or case null* are non-exhaustive.  IOW, the current 
> carve-out for non-exhaustiveness is "if you don't use any of the new 
> switch features."
>
> As to "will have to stay that way", I guess it depends on timeframe.  
> I can see a path of gradually increasing warnings ("totalize that 
> switch with a default clause, dude") turning to error in a decade or so?


More information about the amber-spec-experts mailing list