record badparse {} instance exception = badparse; foo(x: int) int { throw badparse(); } overload foo(x: float) int { return 5; } variant foo = int | float; foofoo(x: foo) = foo(*x); main() { var x = foo(3); foofoo(x); }