| ... | ... | @@ -1493,3 +1493,23 @@ test "union reassignment can use previous value" { |
| 1493 | 1493 | a = U{ .b = a.a }; |
| 1494 | 1494 | try expect(a.b == 32); |
| 1495 | 1495 | } |
| 1496 | |
| 1497 | test "packed union with zero-bit field" { |
| 1498 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1499 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1500 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1501 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1502 | |
| 1503 | const S = packed struct { |
| 1504 | nested: packed union { |
| 1505 | zero: void, |
| 1506 | sized: u32, |
| 1507 | }, |
| 1508 | bar: u32, |
| 1509 | |
| 1510 | fn doTest(self: @This()) !void { |
| 1511 | try expect(self.bar == 42); |
| 1512 | } |
| 1513 | }; |
| 1514 | try S.doTest(.{ .nested = .{ .zero = {} }, .bar = 42 }); |
| 1515 | } |