As of commit af25439, overload fixpoint resolution does not properly deal with mutually recursive functions. The following fails:
f () = h (Type (f ()))
h :: Type Void -> Int
h Void = g ()
h :: Type Int -> Int
h Int = 0
g () = f ()
_ = Type (f ()) :: Type Int
_ = Type (g ()) :: Type Int
As of commit af25439, overload fixpoint resolution does not properly deal with mutually recursive functions. The following fails: