All checks were successful
CI / ci (Release, ubuntu-latest) (pull_request) Successful in 48s
CI / ci (MinSizeRel, ubuntu-latest) (pull_request) Successful in 52s
CI / ci (RelWithDebInfo, ubuntu-latest) (pull_request) Successful in 53s
CI / ci (Debug, ubuntu-latest) (pull_request) Successful in 4m18s
CI / ci (MinSizeRel, ubuntu-latest) (push) Successful in 53s
CI / ci (Release, ubuntu-latest) (push) Successful in 50s
CI / ci (RelWithDebInfo, ubuntu-latest) (push) Successful in 54s
CI / ci (Debug, ubuntu-latest) (push) Successful in 4m19s
44 lines
843 B
Plaintext
44 lines
843 B
Plaintext
S = struct
|
|
{
|
|
a: u8,
|
|
b: u32,
|
|
c: u8,
|
|
}
|
|
|
|
assert = fn (ok: u1) void
|
|
{
|
|
if (!ok) #trap();
|
|
}
|
|
|
|
[export] main = fn [cc(c)] () s32
|
|
{
|
|
>s: S = {
|
|
.a = 241,
|
|
.b = 12356,
|
|
.c = 128,
|
|
};
|
|
|
|
>p_a = &s.a;
|
|
>p_a_struct: &S = #field_parent_pointer(p_a, "a");
|
|
assert(p_a_struct == &s);
|
|
assert(p_a_struct.a == s.a);
|
|
assert(p_a_struct.b == s.b);
|
|
assert(p_a_struct.c == s.c);
|
|
|
|
>p_b = &s.b;
|
|
>p_b_struct: &S = #field_parent_pointer(p_b, "b");
|
|
assert(p_b_struct == &s);
|
|
assert(p_b_struct.a == s.a);
|
|
assert(p_b_struct.b == s.b);
|
|
assert(p_b_struct.c == s.c);
|
|
|
|
>p_c = &s.c;
|
|
>p_c_struct: &S = #field_parent_pointer(p_c, "c");
|
|
assert(p_c_struct == &s);
|
|
assert(p_c_struct.a == s.a);
|
|
assert(p_c_struct.b == s.b);
|
|
assert(p_c_struct.c == s.c);
|
|
|
|
return 0;
|
|
}
|