From ec5b7513734fc7a6f7767dd721de8f6fa088b06d Mon Sep 17 00:00:00 2001 From: dweiller <4678790+dweiller@users.noreply.github.com> Date: Sat, 30 Dec 2023 12:58:35 +1100 Subject: [PATCH] sema: inherit block want_safety for err switch union --- src/Sema.zig | 1 + test/cases/inherit_want_safety.zig | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/Sema.zig b/src/Sema.zig index 7e44e0c86d..b8dcd0a1a5 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -11292,6 +11292,7 @@ fn zirSwitchBlockErrUnion(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Comp .runtime_loop = block.runtime_loop, .runtime_index = block.runtime_index, .error_return_trace_index = block.error_return_trace_index, + .want_safety = block.want_safety, }; const merges = &child_block.label.?.merges; defer child_block.instructions.deinit(gpa); diff --git a/test/cases/inherit_want_safety.zig b/test/cases/inherit_want_safety.zig index 6a70e603a6..a0c79952b8 100644 --- a/test/cases/inherit_want_safety.zig +++ b/test/cases/inherit_want_safety.zig @@ -23,6 +23,13 @@ pub export fn entry() usize { u += 1; }, } + if (@as(error{}!usize, u)) |_| { + u += 1; + } else |e| switch (e) { + else => { + u += 1; + } + } return u; }