aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/struct.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-05-25 18:08:51 +0300
committerVeikka Tuominen <git@vexu.eu>2022-05-25 19:57:38 +0300
commitd214b6bdf05204377d897afe3eacc0cac33c59a3 (patch)
tree96fabebd64e369018b1fa4d24a784bb2cb15b33a /test/behavior/struct.zig
parentb0e8bf15f5017cf101eb31f74dd264eaf136045f (diff)
downloadzig-d214b6bdf05204377d897afe3eacc0cac33c59a3.tar.gz
zig-d214b6bdf05204377d897afe3eacc0cac33c59a3.zip
stage2: packed struct fields do not have a byte offset
Diffstat (limited to 'test/behavior/struct.zig')
-rw-r--r--test/behavior/struct.zig21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/behavior/struct.zig b/test/behavior/struct.zig
index ab7d761de0..8370cd763e 100644
--- a/test/behavior/struct.zig
+++ b/test/behavior/struct.zig
@@ -1319,3 +1319,24 @@ test "packed struct aggregate init" {
const result = @bitCast(u8, S.foo(1, 2));
try expect(result == 9);
}
+
+test "packed struct field access via pointer" {
+ if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+ 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
+
+ const S = struct {
+ fn doTheTest() !void {
+ const S = packed struct { a: u30 };
+ var s1: S = .{ .a = 1 };
+ var s2 = &s1;
+ try expect(s2.a == 1);
+ var s3: S = undefined;
+ var s4 = &s3;
+ _ = s4;
+ }
+ };
+ try S.doTheTest();
+ comptime try S.doTheTest();
+}