authorgravatar for justus@klausecker.deJustus Klausecker <justus@klausecker.de> 2026-01-10 15:38:31+01:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2026-01-11 11:37:18+00:00
log2e99c3042e2641dda21768a898905784aa939031
tree5fff21c147dedd39f9a4f2ac6e115f7b8bd335c4
parent2479966df2ab1c375ec48be025cb265b6887ded5
signaturelock-open Commit is signed but in an unrecognized format.

test: add some more switch regression tests

switch evaluation order, switch lazy value resolution

1 files changed, 32 insertions(+), 0 deletions(-)

test/behavior/switch.zig+32
......@@ -1276,3 +1276,35 @@ test "switch with advanced prong items" {
12761276 try S.doTheTest();
12771277 try comptime S.doTheTest();
12781278}
1279
1280test "switch evaluation order" {
1281 const eval = comptime eval: {
1282 var eval = false;
1283 const eu: anyerror!u32 = 0;
1284 _ = eu catch |err| switch (err) {
1285 blk: {
1286 eval = true;
1287 break :blk error.MyError;
1288 } => {},
1289 else => unreachable,
1290 };
1291 break :eval eval;
1292 };
1293 try comptime expect(!eval);
1294}
1295
1296test "switch resolves lazy values correctly" {
1297 const S = extern struct {
1298 a: u16,
1299 b: i16,
1300 };
1301 const ok1 = switch (@sizeOf(S)) {
1302 4 => true,
1303 else => false,
1304 };
1305 const ok2 = switch (@sizeOf(S)) {
1306 4 => true,
1307 else => false,
1308 };
1309 try comptime expect(ok1 == ok2);
1310}