aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-02-16 15:45:41 -0500
committerAndrew Kelley <superjoe30@gmail.com>2017-02-16 15:45:41 -0500
commitfc5d47b9b960aa08d65bf0dfe3d6395c811f793b (patch)
tree2ccc51b0a0f2429793c4be5075bfda53b1b01b65 /test
parent4b5cc80f665314067e0e5b96c859acca1b2e1cb0 (diff)
downloadzig-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.zig31
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;
+}