X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/113d72170910c3dd0e9b49c6b46a8ae42df66ab8..3b7f9c260a684e723a1cfac3a98ac55120ec1a51:/src/describe.sml diff --git a/src/describe.sml b/src/describe.sml index 1e81550..e5850e2 100644 --- a/src/describe.sml +++ b/src/describe.sml @@ -112,9 +112,9 @@ fun will_be_action (t, _) = fun get_first_arg (t, _) = case t of - TArrow (t', _) => t' + TArrow (t', _) => SOME t' | TUnif (_, ref (SOME t')) => get_first_arg t' - | _ => raise Fail "get_first_arg failed!" + | _ => NONE fun hint te = case te of @@ -137,9 +137,12 @@ fun describe_type_error' loc te = Option.app (describe_unification_error t1) ueo) | WrongForm (place, form, e, t, ueo) => if form = "action" andalso will_be_action t then - (ErrorMsg.error (SOME loc) "Not enough arguments passed to configuration function."; - preface (" Expression so far:", p_exp e); - preface ("Next argument type:", p_typ (get_first_arg t))) + (case get_first_arg t of + NONE => ErrorMsg.error (SOME loc) "You probably forgot a 'with' clause here." + | SOME t' => + (ErrorMsg.error (SOME loc) ("Not enough arguments passed to configuration function. (" ^ place ^ ")"); + preface (" Expression so far:", p_exp e); + preface ("Next argument type:", p_typ t'))) else (ErrorMsg.error (SOME loc) (place ^ " has a non-" ^ form ^ " type."); preface ("Expression:", p_exp e);