JEP325: Switch expressions spec
Gavin Bierman
gavin.bierman at oracle.com
Thu May 10 10:12:16 UTC 2018
[Apologies for slow reply. Now going through the latest batch of feedback.]
Ack. Thanks.
Gavin
> On 27 Apr 2018, at 22:55, Alex Buckley <alex.buckley at oracle.com> wrote:
>
> On 4/27/2018 8:03 AM, Gavin Bierman wrote:
>> I have uploaded the latest draft of the spec for JEP 325 at http://cr.openjdk.java.net/~gbierman/switch-expressions.html
>
> 14.16 is right to say that:
>
> A break statement with value Expression ***attempts to cause the
> evaluation of the immediately enclosing switch expression***
> to complete normally ...
>
> because the following is legal (x will become 200) :
>
> int x = switch (e) {
> case 1 -> {
> try { break 100; } finally { break 200; }
> }
> default -> 0;
> };
>
> Therefore, in the discussion section, please say that:
>
> The preceding descriptions say "attempts to transfer control"
> ***and "attempts to cause evaluation to complete normally",***
> rather than just "transfers control" ***and "causes evaluation
> to complete normally",*** because if there are any try statements ...
>
> ... innermost to outermost, before control is transferred to the
> break target ***or evaluation of the break target completes***.
>
> [Notice we don't yet know if evaluation of the break target
> will complete normally or abruptly. If the finally clause above
> was to throw an exception instead of break-200, then the
> switch expression would complete abruptly by reason of the
> exception, rather than completing normally with the value 100.]
>
> (Separately: Please flag the new text in 15.15's opening line.)
>
> Alex
More information about the amber-spec-experts
mailing list