Improve error message
authorsimonpj@microsoft.com <unknown>
Tue, 8 Aug 2006 08:02:55 +0000 (08:02 +0000)
committersimonpj@microsoft.com <unknown>
Tue, 8 Aug 2006 08:02:55 +0000 (08:02 +0000)
Improve a little-used error message.  Given
f :: a -> a
f x y = e
the error says

The equations for f have two arguments
but its type `a -> a' has only one

(Before, it said "its type `a' has only one" which is bogus.

compiler/typecheck/TcUnify.lhs

index c13da2c..f9936e7 100644 (file)
@@ -168,7 +168,7 @@ subFunTys error_herald n_pats res_ty thing_inside
     loop n args_so_far res_ty@(AppTy _ _)
        = do { [arg_ty',res_ty'] <- newBoxyTyVarTys [argTypeKind, openTypeKind]
             ; (_, mb_unit) <- tryTcErrs $ boxyUnify res_ty (FunTy arg_ty' res_ty')
-            ; if isNothing mb_unit then bale_out args_so_far res_ty
+            ; if isNothing mb_unit then bale_out args_so_far
               else loop n args_so_far (FunTy arg_ty' res_ty') }
 
     loop n args_so_far (TyVarTy tv)
@@ -185,9 +185,9 @@ subFunTys error_herald n_pats res_ty thing_inside
                -- Note argTypeKind: the args can have an unboxed type,
                -- but not an unboxed tuple.
 
-    loop n args_so_far res_ty = bale_out args_so_far res_ty
+    loop n args_so_far res_ty = bale_out args_so_far
 
-    bale_out args_so_far res_ty
+    bale_out args_so_far 
        = do { env0 <- tcInitTidyEnv
             ; res_ty' <- zonkTcType res_ty
             ; let (env1, res_ty'') = tidyOpenType env0 res_ty'