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
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);