Disallowing break label (and continue label) inside an expression switch
Brian Goetz
brian.goetz at oracle.com
Thu Mar 8 19:36:12 UTC 2018
Jan has updated the prototype to make the switch expression a bubble
penatrable only by exceptions. Please take a look!
On 3/2/2018 9:30 AM, Remi Forax wrote:
> Hi all,
> as far as i remember, the current idea to differentiate between a break label and a break value is to let the compiler figure this out,
> i wonder if it's not simpler to disallow break label (and continue label) inside an expression switch.
>
> After all, an expression switch do not exist yet, so no backward compatibility issue, it may make some refactoring impossible but had the great advantage to do not allow a lot of puzzler codes like the one below.
>
> enum Result {
> ONE, MANY
> }
>
> Result result(String[] args) {
> ONE: for(String s: args) {
> return switch(s) {
> case "several":
> case "many":
> break MANY;
> case "one":
> break ONE;
> default:
> continue;
> };
> }
> throw ...;
> }
>
> Rémi
More information about the amber-spec-experts
mailing list