aboutsummaryrefslogtreecommitdiff
path: root/test/cases/struct.zig
diff options
context:
space:
mode:
Diffstat (limited to 'test/cases/struct.zig')
-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;
+}