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:
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);
+}