diff options
| author | Veikka Tuominen <git@vexu.eu> | 2023-03-21 00:27:33 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2023-03-21 03:31:03 +0200 |
| commit | e70a0b2a6b329a76e9edc4d22c7b923841703a24 (patch) | |
| tree | b4c701e37ca21ed6e232cc35d6c381262bb87a70 /test | |
| parent | 82133cd992575ab567091eaf2f12fbe5e326b5df (diff) | |
| download | zig-e70a0b2a6b329a76e9edc4d22c7b923841703a24.tar.gz zig-e70a0b2a6b329a76e9edc4d22c7b923841703a24.zip | |
Value: implement reinterpreting enum field index as integer
Closes #15019
Diffstat (limited to 'test')
| -rw-r--r-- | test/behavior/union.zig | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/behavior/union.zig b/test/behavior/union.zig index ff3f0b7e54..010b4a1ffa 100644 --- a/test/behavior/union.zig +++ b/test/behavior/union.zig @@ -1513,3 +1513,23 @@ test "packed union with zero-bit field" { }; try S.doTest(.{ .nested = .{ .zero = {} }, .bar = 42 }); } + +test "reinterpreting enum value inside packed union" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + 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_wasm) return error.SkipZigTest; // TODO + + const U = packed union { + tag: enum { a, b }, + val: u8, + + fn doTest() !void { + var u: @This() = .{ .tag = .a }; + u.val += 1; + try expect(u.tag == .b); + } + }; + try U.doTest(); + comptime try U.doTest(); +} |
