S = struct { a: u64, b: u64, c: u64, d: u64, e: u64 f: u64, g: u64, h: u64, i: u64, j: u64 } require = fn (ok: u1) void { if (!ok) { #trap(); } } va_arg_fn = fn [cc(c)] (first_arg: u32, ...) void { if (first_arg != 123456789) { #trap(); } >va = #va_start(); >s = #va_arg(&va, S); require(s.a == 9); require(s.b == 8); require(s.c == 7); require(s.d == 6); require(s.e == 5); require(s.f == 4); require(s.g == 3); require(s.h == 2); require(s.i == 1); require(s.j == 0); } [export] main = fn [cc(c)] () s32 { >first_arg: u32 = 123456789; >s : S = { .a = 9, .b = 8, .c = 7, .d = 6, .e = 5, .f = 4, .g = 3, .h = 2, .i = 1, .j = 0, }; va_arg_fn(first_arg, s); return 0; }