Switch expressions spec

Guy Steele guy.steele at oracle.com
Sat Mar 16 00:01:21 UTC 2019


And here’s another way to think about it: if a subexpression never completes normally, then in effect there is unreachable code in the containing expression, and we don’t like to have unreachable code.

> On Mar 15, 2019, at 3:09 PM, Brian Goetz <brian.goetz at oracle.com> wrote:
> 
> At the same time, we also reaffirmed our choice to _not_ allow throw from one half of a conditional:
> 
>    int x = foo ? 3 : throw new FooException()
> 
> But John has this right — the high order bit is that every expression should have a defined normal completion, and a type, even if computing sub-expressions (or in this case, sub-statements) might throw.  And without at least one arm yielding a value, it would be impossible to infer the type of the expression.  



More information about the amber-spec-experts mailing list