zig/test/cases/field_parent_ptr.zig
Andrew Kelley 3671582c15 syntax: functions require return type. remove ->
The purpose of this is:

 * Only one way to do things
 * Changing a function with void return type to return a possible
   error becomes a 1 character change, subtly encouraging
   people to use errors.

See #632

Here are some imperfect sed commands for performing this update:

remove arrow:

```
sed -i 's/\(\bfn\b.*\)-> /\1/g' $(find . -name "*.zig")
```

add void:

```
sed -i 's/\(\bfn\b.*\))\s*{/\1) void {/g' $(find ../ -name "*.zig")
```

Some cleanup may be necessary, but this should do the bulk of the work.
2018-01-25 04:10:11 -05:00

42 lines
790 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);
}