aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2023-03-21 00:27:33 +0200
committerVeikka Tuominen <git@vexu.eu>2023-03-21 03:31:03 +0200
commite70a0b2a6b329a76e9edc4d22c7b923841703a24 (patch)
treeb4c701e37ca21ed6e232cc35d6c381262bb87a70 /test
parent82133cd992575ab567091eaf2f12fbe5e326b5df (diff)
downloadzig-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.zig20
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();
+}