Module Typing.Type_overloading

val type_overloaded_function_defns : Parsing.Parsed_ast.function_defn list -> unit Core.Or_error.t

Check functions are overloaded correctly (i.e. each has a different number/type of args)

val type_overloaded_method_defns : Parsing.Parsed_ast.method_defn list -> unit Core.Or_error.t
val get_matching_function_type : Parsing.Parsed_ast.class_defn list -> Ast.Ast_types.Function_name.t -> Ast.Ast_types.type_expr list -> Parsing.Parsed_ast.function_defn list -> Ast.Ast_types.loc -> (Ast.Ast_types.type_expr list * Ast.Ast_types.type_expr) Core.Or_error.t

We pass in the args types to find the matching overloaded function/method defn.

val get_matching_method_type : Parsing.Parsed_ast.class_defn list -> Ast.Ast_types.Method_name.t -> Ast.Ast_types.type_expr list -> Parsing.Parsed_ast.class_defn -> Ast.Ast_types.type_expr option -> Ast.Ast_types.loc -> (Ast.Ast_types.type_expr Core.sexp_list * Ast.Ast_types.type_expr) Core.Or_error.t