diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-12-27 22:04:21 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-12-27 22:06:23 -0700 |
| commit | 85d4c8620f602726b159efe1fe2ea0e07e3c5b59 (patch) | |
| tree | 73399f38f3a9782a9ecf067eec3cc612d79a4591 /test/behavior/struct_llvm.zig | |
| parent | 042b770d6272391a9c25f3444991b439ae07a1b5 (diff) | |
| download | zig-85d4c8620f602726b159efe1fe2ea0e07e3c5b59.tar.gz zig-85d4c8620f602726b159efe1fe2ea0e07e3c5b59.zip | |
Sema: implement array coercion
Diffstat (limited to 'test/behavior/struct_llvm.zig')
| -rw-r--r-- | test/behavior/struct_llvm.zig | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/behavior/struct_llvm.zig b/test/behavior/struct_llvm.zig index 9b19abf030..36310d797b 100644 --- a/test/behavior/struct_llvm.zig +++ b/test/behavior/struct_llvm.zig @@ -246,3 +246,42 @@ test "packed struct with non-ABI-aligned field" { try expect(s.x == 1); try expect(s.y == 42); } + +const BitField1 = packed struct { + a: u3, + b: u3, + c: u2, +}; + +const bit_field_1 = BitField1{ + .a = 1, + .b = 2, + .c = 3, +}; + +test "bit field access" { + var data = bit_field_1; + try expect(getA(&data) == 1); + try expect(getB(&data) == 2); + try expect(getC(&data) == 3); + comptime try expect(@sizeOf(BitField1) == 1); + + data.b += 1; + try expect(data.b == 3); + + data.a += 1; + try expect(data.a == 2); + try expect(data.b == 3); +} + +fn getA(data: *const BitField1) u3 { + return data.a; +} + +fn getB(data: *const BitField1) u3 { + return data.b; +} + +fn getC(data: *const BitField1) u2 { + return data.c; +} |
