VariadicArguments :: (string: *char, args: ..): Any return args[0] AnyArguments :: (values: []Any) for values Assert(it.type == S64) Assert(*(values[0].data->*S64) == 10) Assert(*(values[1].data->*S64) == 20) // printf :: #foreign (string: *char, args: ..): int main :: (): int a := 10 b := 20 values := []Any{a, b} // printf("Test %d", {a}) for values Assert(it.type == S64) AnyArguments({a,b}) c := VariadicArguments("Test", args = {a+b,b}) Assert(*(c.data->*S64) == 30) d := VariadicArguments("Test", {b,a}) Assert(*(d.data->*S64) == b) e := VariadicArguments("Test", {b,a}) Assert(*(values[0].data->*S64) == 10) Assert(*(values[1].data->*S64) == 20) // @todo: maybe this is better? Assert(*cast(*S64)values[0].data == 10) return 0