Commit 2583a39fb6
Changed files (1)
test
behavior
test/behavior/bitcast.zig
@@ -459,3 +459,47 @@ test "bitcast nan float does modify signaling bit" {
try expectEqual(math.nan_u128, @as(u128, @bitCast(snan_f128_var)));
try expectEqual(math.nan_u128, bitCastWrapper128(snan_f128_var));
}
+
+test "@bitCast of packed struct of bools all true" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
+
+ const P = packed struct {
+ b0: bool,
+ b1: bool,
+ b2: bool,
+ b3: bool,
+ };
+ var p = std.mem.zeroes(P);
+ p.b0 = true;
+ p.b1 = true;
+ p.b2 = true;
+ p.b3 = true;
+ try expect(@as(u8, @as(u4, @bitCast(p))) == 15);
+}
+
+test "@bitCast of packed struct of bools all false" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
+
+ const P = packed struct {
+ b0: bool,
+ b1: bool,
+ b2: bool,
+ b3: bool,
+ };
+ var p = std.mem.zeroes(P);
+ p.b0 = false;
+ p.b1 = false;
+ p.b2 = false;
+ p.b3 = false;
+ try expect(@as(u8, @as(u4, @bitCast(p))) == 0);
+}