diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-02-16 15:45:41 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-02-16 15:45:41 -0500 |
| commit | fc5d47b9b960aa08d65bf0dfe3d6395c811f793b (patch) | |
| tree | 2ccc51b0a0f2429793c4be5075bfda53b1b01b65 /test | |
| parent | 4b5cc80f665314067e0e5b96c859acca1b2e1cb0 (diff) | |
| download | zig-fc5d47b9b960aa08d65bf0dfe3d6395c811f793b.tar.gz zig-fc5d47b9b960aa08d65bf0dfe3d6395c811f793b.zip | |
reading from a bit field partially works
See #261
Still need to do:
* reading a field that has bit offset 0 but still needs to
shift and truncate
* writing a field
Diffstat (limited to 'test')
| -rw-r--r-- | test/cases/struct.zig | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/cases/struct.zig b/test/cases/struct.zig index fd49d00f76..403133e369 100644 --- a/test/cases/struct.zig +++ b/test/cases/struct.zig @@ -225,3 +225,34 @@ fn packedStruct() { const four = foo.x + foo.y; assert(four == 4); } + + +const u2 = @intType(false, 2); +const u3 = @intType(false, 3); + +const BitField1 = packed struct { + a: u3, + b: u3, + c: u2, +}; + +fn bitFieldAccess() { + @setFnTest(this); + + const data = BitField1 { + .a = 1, + .b = 2, + .c = 3, + }; + assert(getB(&data) == 2); + assert(getC(&data) == 3); + comptime assert(@sizeOf(BitField1) == 1); +} + +fn getB(data: &const BitField1) -> u3 { + return data.b; +} + +fn getC(data: &const BitField1) -> u2 { + return data.c; +} |
