Short-circuiting compound assignment: pass the left side in as a value
To add short-circuiting compound assignments (&&= / ||= style) to a compiler that already emits short-circuit && and ||, refactor the short-circuit emitter to take an already-evaluated left-hand value plus the unevaluated right-hand expression, instead of the whole binary node. The binary operator then passes emit(lhs), and the compound statement loads the place's current value and passes that, so the right side is evaluated only when the place doesn't decide the answer. Keep the evaluation order explicit: the short-circuiting compounds must read the place before evaluating the right side, while ordinary compounds can keep their existing order. Test it with a right side that traps (like a divide by zero), so a program only passes if the skip really happens.