zig/test/cases/field_parent_ptr.zig
Andrew Kelley fcbb7426fa use * for pointer type instead of &
See #770

To help automatically translate code, see the
zig-fmt-pointer-reform-2 branch.

This will convert all & into *. Due to the syntax
ambiguity (which is why we are making this change),
even address-of & will turn into *, so you'll have
to manually fix thes instances. You will be guaranteed
to get compile errors for them - expected 'type', found 'foo'
2018-05-31 17:28:07 -04:00

42 lines
789 B
Zig

const assert = @import("std").debug.assert;
test "@fieldParentPtr non-first field" {
testParentFieldPtr(&foo.c);
comptime testParentFieldPtr(&foo.c);
}
test "@fieldParentPtr first field" {
testParentFieldPtrFirst(&foo.a);
comptime testParentFieldPtrFirst(&foo.a);
}
const Foo = struct {
a: bool,
b: f32,
c: i32,
d: i32,
};
const foo = Foo{
.a = true,
.b = 0.123,
.c = 1234,
.d = -10,
};
fn testParentFieldPtr(c: *const i32) void {
assert(c == &foo.c);
const base = @fieldParentPtr(Foo, "c", c);
assert(base == &foo);
assert(&base.c == c);
}
fn testParentFieldPtrFirst(a: *const bool) void {
assert(a == &foo.a);
const base = @fieldParentPtr(Foo, "a", a);
assert(base == &foo);
assert(&base.a == a);
}