But that is because it’s actually a let (of course). This case, too, would suffer from potential ambiguity, depending on what follows:
let z = {
let _x = if foo { bar } else { baz }
*p
}
Contrived, perhaps, but syntactically ambiguous without semicolons (multiplication or result value).
I personally don’t like the proposal for the opposite reason: it prevents me from breaking long expressions into lines without having to worry that this might arbitrarily create an unintended split.
Hence I would argue the opposite, if anything: allow additional, superfluous semicolons where they don’t hurt, such as at the end of structs:
struct Zorg; // currently required
struct Zerg { ... }; // currently forbidden, could be allowed