| ... | ... | @@ -1733,32 +1733,28 @@ fn switchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, switch_node: *ast.Node |
| 1733 | 1733 | } |
| 1734 | 1734 | } |
| 1735 | 1735 | |
| 1736 | | const condbr = try addZIRInstSpecial(mod, &else_scope.base, case_src, zir.Inst.CondBr, .{ |
| 1736 | const condbr = try addZIRInstSpecial(mod, &case_scope.base, case_src, zir.Inst.CondBr, .{ |
| 1737 | 1737 | .condition = any_ok.?, |
| 1738 | 1738 | .then_body = undefined, // populated below |
| 1739 | 1739 | .else_body = undefined, // populated below |
| 1740 | 1740 | }, .{}); |
| 1741 | | |
| 1742 | | try switchCaseExpr(mod, &case_scope.base, case_rl, block, case); |
| 1743 | | condbr.positionals.then_body = .{ |
| 1741 | const cond_block = try addZIRInstBlock(mod, &else_scope.base, case_src, .block, .{ |
| 1744 | 1742 | .instructions = try scope.arena().dupe(*zir.Inst, case_scope.instructions.items), |
| 1745 | | }; |
| 1743 | }); |
| 1746 | 1744 | |
| 1747 | | // reset to add the empty block |
| 1745 | // reset cond_scope for then_body |
| 1748 | 1746 | case_scope.instructions.items.len = 0; |
| 1749 | | const empty_block = try addZIRInstBlock(mod, &case_scope.base, case_src, .block, .{ |
| 1750 | | .instructions = undefined, // populated below |
| 1751 | | }); |
| 1752 | | condbr.positionals.else_body = .{ |
| 1747 | try switchCaseExpr(mod, &case_scope.base, case_rl, block, case); |
| 1748 | condbr.positionals.then_body = .{ |
| 1753 | 1749 | .instructions = try scope.arena().dupe(*zir.Inst, case_scope.instructions.items), |
| 1754 | 1750 | }; |
| 1755 | 1751 | |
| 1756 | | // reset to add a break to the empty block |
| 1752 | // reset cond_scope for else_body |
| 1757 | 1753 | case_scope.instructions.items.len = 0; |
| 1758 | 1754 | _ = try addZIRInst(mod, &case_scope.base, case_src, zir.Inst.BreakVoid, .{ |
| 1759 | | .block = empty_block, |
| 1755 | .block = cond_block, |
| 1760 | 1756 | }, .{}); |
| 1761 | | empty_block.positionals.body = .{ |
| 1757 | condbr.positionals.else_body = .{ |
| 1762 | 1758 | .instructions = try scope.arena().dupe(*zir.Inst, case_scope.instructions.items), |
| 1763 | 1759 | }; |
| 1764 | 1760 | } |