aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/struct.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-09-25 17:52:50 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-09-25 17:54:52 -0700
commit04366576ea4be4959b596ebff7041d17e18d08d8 (patch)
tree94dceb8f1e846e09356e5b40b884791a7cc314eb /test/behavior/struct.zig
parent15f55b2805541276f491d255f60f501c8cbd1191 (diff)
downloadzig-04366576ea4be4959b596ebff7041d17e18d08d8.tar.gz
zig-04366576ea4be4959b596ebff7041d17e18d08d8.zip
stage2: implement `@sizeOf` for non-packed structs
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 6f00b71057..e048848799 100644
--- a/test/behavior/struct.zig
+++ b/test/behavior/struct.zig
@@ -31,3 +31,24 @@ test "return empty struct instance" {
fn returnEmptyStructInstance() StructWithNoFields {
return empty_global_instance;
}
+
+const StructFoo = struct {
+ a: i32,
+ b: bool,
+ c: f32,
+};
+test "structs" {
+ var foo: StructFoo = undefined;
+ @memset(@ptrCast([*]u8, &foo), 0, @sizeOf(StructFoo));
+ foo.a += 1;
+ foo.b = foo.a == 1;
+ try testFoo(foo);
+ testMutation(&foo);
+ try expect(foo.c == 100);
+}
+fn testFoo(foo: StructFoo) !void {
+ try expect(foo.b);
+}
+fn testMutation(foo: *StructFoo) void {
+ foo.c = 100;
+}