'label: if condition {
...
break 'label; // will exit this if-else chain as if it was enclosed in a labeled block
}
'label: if condition {
...
continue 'label; // will jump to the next if in this if-else chain
}
else if other_condition {
}
(edit) I don't mean this to be a feature of "adding labels to expressions", only adding labels to ifs, so you can break out of them or continue to the next in the chain
I could see allowing break 'label for any ExpressionWithBlock (expressions that don't require a ; when used as a statement) being reasonable. More than that or continue for non-looping constructs seems extremely awkward.
break and continue are always just "skipping" things. break skips the rest of the loop (or the rest of the block) and continue skips the rest of the iteration. But this new usage of continue is not just skipping the block - it executes the else clause, which otherwise would not get executed.