print_res: (x: i32) -> i32 = { std::cout << x; if x == 9 { std::cout << '\n'; } return x; } t: @struct type = { f: (inout this) -> i32 = print_res(0); f: (inout this, _) -> i32 = print_res(1); f: <_> (inout this) -> i32 = print_res(2); f: <_> (inout this, _) -> i32 = print_res(3); f: <_, U> (inout this, _, _) -> i32 = print_res(4); } f: (_: t) -> i32 = print_res(5); f: (_: t, _) -> i32 = print_res(6); f: <_> (_: t) -> i32 = print_res(7); f: <_> (_: t, _) -> i32 = print_res(8); f: <_, U> (_: t, _, _) -> i32 = print_res(9); m: t = (); n: const t = (); a: <_, U> _ == n; _: i32 = m.f(); _: i32 = m.f(0); _: i32 = m.f(); _: i32 = m.f(0); _: i32 = m.f(0, 0); _: i32 = n.f(); _: i32 = n.f(0); _: i32 = n.f(); _: i32 = n.f(0); _: i32 = n.f(0, 0); _: i32 = a.f(0, 0); main: () = { _ = m.f(); _ = m.f(0); _ = m.f(); _ = m.f(0); _ = m.f(0, 0); _ = n.f(); _ = n.f(0); _ = n.f(); _ = n.f(0); _ = n.f(0, 0); _ = a.f(0, 0); _ = :(a, f) = { _ = a.f(a).f(); }; // _ = 0.std::min(0); _ = 0.ns::t<0, 0>::f<0>(); } // _: i32 = 0.std::min(0); _: i32 = 0.ns::t<0, 0>::f<0>(); ns: namespace = { t: @struct type = { f: (_: int) -> i32 = 0; } } // namespace ns A: @struct type = { f: (this) = { } } B: @struct type = { m: A; f: (this) = m.f(); }