From a415fe0bc083159cf4bca6984636a564589e9789 Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Mon, 28 Mar 2022 12:23:19 +0300 Subject: AstGen: clear rl_ty_inst in setBreakResultLoc if one is not provided --- test/behavior/basic.zig | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'test/behavior/basic.zig') diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig index e0e0f25569..6c21b8dd6c 100644 --- a/test/behavior/basic.zig +++ b/test/behavior/basic.zig @@ -854,3 +854,24 @@ test "labeled block implicitly ends in a break" { if (a) break :blk; } } + +test "catch in block has correct result location" { + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + + const S = struct { + fn open() error{A}!@This() { + return @This(){}; + } + fn foo(_: @This()) u32 { + return 1; + } + }; + const config_h_text: u32 = blk: { + var dir = S.open() catch unreachable; + break :blk dir.foo(); + }; + try expect(config_h_text == 1); +} -- cgit v1.2.3