Improve one kind of error message
[hcoop/domtool2.git] / src / describe.sml
index 11194af..e5850e2 100644 (file)
@@ -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. (" ^ place ^ ")");
-            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);