Closed
Description
One awkward situation is this pattern:
const result_is_to = x: {
if (parsed_from.kind != parsed_to.kind) {
break :x true;
} else switch (parsed_from.kind) {
WindowsPath.Kind.NetworkShare => {
break :x !networkShareServersEql(parsed_to.disk_designator, parsed_from.disk_designator);
},
WindowsPath.Kind.Drive => {
break :x asciiUpper(parsed_from.disk_designator[0]) != asciiUpper(parsed_to.disk_designator[0]);
},
else => unreachable,
}
};
In all of these situations, we just want to break from the current block.
Proposal: result
keyword, which is like break
but it always breaks from the current block.
The example becomes:
const result_is_to = {
if (parsed_from.kind != parsed_to.kind) {
result true;
} else switch (parsed_from.kind) {
WindowsPath.Kind.NetworkShare => {
result !networkShareServersEql(parsed_to.disk_designator, parsed_from.disk_designator);
},
WindowsPath.Kind.Drive => {
result asciiUpper(parsed_from.disk_designator[0]) != asciiUpper(parsed_to.disk_designator[0]);
},
else => unreachable,
}
};