aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/if.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-10-02 19:09:54 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-10-02 19:09:54 -0700
commit61a53a587558ff1fe1b0ec98bb424022885edccf (patch)
tree0e0ad82f7998a473104ec6fa07cb051a1b56a7c3 /test/behavior/if.zig
parentac52e005640e9dc7829356f857a82b0bc3894245 (diff)
downloadzig-61a53a587558ff1fe1b0ec98bb424022885edccf.tar.gz
zig-61a53a587558ff1fe1b0ec98bb424022885edccf.zip
AstGen: fix if, orelse, catch, with unreachable bodies
Before, the system to replace a result location pointer with a traditional break instruction did not notice the case when one of the bodies was unreachable. Now, the emitted ZIR code is improved and simplified in this case, resulting in a new passing behavior test.
Diffstat (limited to 'test/behavior/if.zig')
-rw-r--r--test/behavior/if.zig8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/behavior/if.zig b/test/behavior/if.zig
index 191d4817df..a1f722d827 100644
--- a/test/behavior/if.zig
+++ b/test/behavior/if.zig
@@ -65,3 +65,11 @@ test "labeled break inside comptime if inside runtime if" {
}
try expect(answer == 42);
}
+
+test "const result loc, runtime if cond, else unreachable" {
+ const Num = enum { One, Two };
+
+ var t = true;
+ const x = if (t) Num.Two else unreachable;
+ try expect(x == .Two);
+}