> I am concerned about the treatment of 'break' statements in switch
> expressions. The following seems like something that would be very natural to
> do:
>
> boolean x = switch (expr()) {
> case FOO -> {
> for (String s : strings) {
> if (s.isEmpty()) break false;
> }
> break true;
> }
> case BAR -> true;
> default -> false;
> };
This should be valid. If you recall the table I posted regarding abrupt
completion, the for-loop should be transparent to “break val”, in the same way
it is transparent to “return” or “throw” or that block expressions are
transparent to all abruptly completing statements. The constraint on “case Foo
-> { … }” is that the block must complete abruptly via break-value.