Skip to content

Commit ed23615

Browse files
mikdusanandrewrk
authored andcommitted
behavior: add test for #8277
Test `@sizeOf` reified union with zero-size payload fields. closes #8277
1 parent 09ff03a commit ed23615

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

test/behavior.zig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ test {
7474
_ = @import("behavior/bugs/7047.zig");
7575
_ = @import("behavior/bugs/7187.zig");
7676
_ = @import("behavior/bugs/7325.zig");
77+
_ = @import("behavior/bugs/8277.zig");
7778
_ = @import("behavior/bugs/8646.zig");
7879
_ = @import("behavior/bugs/9584.zig");
7980
_ = @import("behavior/bugs/10138.zig");

test/behavior/bugs/8277.zig

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const std = @import("std");
2+
const builtin = @import("builtin");
3+
4+
test "@sizeOf reified union zero-size payload fields" {
5+
comptime {
6+
try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union {}))));
7+
try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union { a: void }))));
8+
if (builtin.mode == .Debug or builtin.mode == .ReleaseSafe) {
9+
try std.testing.expect(1 == @sizeOf(@Type(@typeInfo(union { a: void, b: void }))));
10+
try std.testing.expect(1 == @sizeOf(@Type(@typeInfo(union { a: void, b: void, c: void }))));
11+
} else {
12+
try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union { a: void, b: void }))));
13+
try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union { a: void, b: void, c: void }))));
14+
}
15+
}
16+
}

0 commit comments

Comments
 (0)