| author | |
| committer | |
| log | ed2361563860031559addbe276eb64114b93cec5 |
| tree | 3b01bbb8b3939110bbeea691b58b28cef00f93e5 |
| parent | 09ff03a57a9f2144f0d3e9b0173bac7035d3629b |
Test `@sizeOf` reified union with zero-size payload fields.
closes #82772 files changed, 17 insertions(+), 0 deletions(-)
test/behavior.zig+1| ... | ... | @@ -74,6 +74,7 @@ test { |
| 74 | 74 | _ = @import("behavior/bugs/7047.zig"); |
| 75 | 75 | _ = @import("behavior/bugs/7187.zig"); |
| 76 | 76 | _ = @import("behavior/bugs/7325.zig"); |
| 77 | _ = @import("behavior/bugs/8277.zig"); | |
| 77 | 78 | _ = @import("behavior/bugs/8646.zig"); |
| 78 | 79 | _ = @import("behavior/bugs/9584.zig"); |
| 79 | 80 | _ = @import("behavior/bugs/10138.zig"); |
test/behavior/bugs/8277.zig created+16| ... | ... | @@ -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 | } |