mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-03-08 04:04:44 +01:00
test: add some more switch regression tests
switch evaluation order, switch lazy value resolution
This commit is contained in:
parent
2479966df2
commit
2e99c3042e
1 changed files with 32 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue