behavior: add test for #8277

Test `@sizeOf` reified union with zero-size payload fields.

closes #8277
This commit is contained in:
Michael Dusan 2023-01-03 00:24:48 -05:00 committed by Andrew Kelley
parent 09ff03a57a
commit ed23615638
2 changed files with 17 additions and 0 deletions

View file

@ -74,6 +74,7 @@ test {
_ = @import("behavior/bugs/7047.zig");
_ = @import("behavior/bugs/7187.zig");
_ = @import("behavior/bugs/7325.zig");
_ = @import("behavior/bugs/8277.zig");
_ = @import("behavior/bugs/8646.zig");
_ = @import("behavior/bugs/9584.zig");
_ = @import("behavior/bugs/10138.zig");

View file

@ -0,0 +1,16 @@
const std = @import("std");
const builtin = @import("builtin");
test "@sizeOf reified union zero-size payload fields" {
comptime {
try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union {}))));
try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union { a: void }))));
if (builtin.mode == .Debug or builtin.mode == .ReleaseSafe) {
try std.testing.expect(1 == @sizeOf(@Type(@typeInfo(union { a: void, b: void }))));
try std.testing.expect(1 == @sizeOf(@Type(@typeInfo(union { a: void, b: void, c: void }))));
} else {
try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union { a: void, b: void }))));
try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union { a: void, b: void, c: void }))));
}
}
}