zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 2e99c3042e2641dda21768a898905784aa939031 (tree)
parent 2479966df2ab1c375ec48be025cb265b6887ded5
Author: Justus Klausecker <justus@klausecker.de>
Date:   Sat, 10 Jan 2026 15:38:31 +0100

test: add some more switch regression tests

switch evaluation order, switch lazy value resolution

Diffstat:
Mtest/behavior/switch.zig | 32++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+), 0 deletions(-)

diff --git a/test/behavior/switch.zig b/test/behavior/switch.zig @@ -1276,3 +1276,35 @@ test "switch with advanced prong items" { try S.doTheTest(); try comptime S.doTheTest(); } + +test "switch evaluation order" { + const eval = comptime eval: { + var eval = false; + const eu: anyerror!u32 = 0; + _ = eu catch |err| switch (err) { + blk: { + eval = true; + break :blk error.MyError; + } => {}, + else => unreachable, + }; + break :eval eval; + }; + try comptime expect(!eval); +} + +test "switch resolves lazy values correctly" { + const S = extern struct { + a: u16, + b: i16, + }; + const ok1 = switch (@sizeOf(S)) { + 4 => true, + else => false, + }; + const ok2 = switch (@sizeOf(S)) { + 4 => true, + else => false, + }; + try comptime expect(ok1 == ok2); +}