summaryrefslogtreecommitdiff
path: root/compiler/rename
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2016-08-12 15:52:07 +0100
committerSimon Peyton Jones <simonpj@microsoft.com>2016-08-12 17:34:12 +0100
commitac0e11252af149f085e2262200b7a1638b4a1553 (patch)
tree9001e3efcb0520338c0c9d1a38eb159c8ad1c3d4 /compiler/rename
parent9684dbb1d776a8e086f8db4191b3bcf826867dda (diff)
downloadhaskell-ac0e11252af149f085e2262200b7a1638b4a1553.tar.gz
Improve missing-sig warning
Fixes Trac #12484
Diffstat (limited to 'compiler/rename')
-rw-r--r--compiler/rename/RnNames.hs20
1 files changed, 11 insertions, 9 deletions
diff --git a/compiler/rename/RnNames.hs b/compiler/rename/RnNames.hs
index 51a231c184..f0c7bb941d 100644
--- a/compiler/rename/RnNames.hs
+++ b/compiler/rename/RnNames.hs
@@ -1604,27 +1604,29 @@ warnMissingSignatures gbl_env
(mapM_ add_bind_warn binds)
where
add_pat_syn_warn p
- = add_warn (patSynName p) (pprPatSynType p)
+ = add_warn name $
+ hang (text "Pattern synonym with no type signature:")
+ 2 (text "pattern" <+> pprPrefixName name <+> dcolon <+> pp_ty)
+ where
+ name = patSynName p
+ pp_ty = pprPatSynType p
add_bind_warn id
= do { env <- tcInitTidyEnv -- Why not use emptyTidyEnv?
; let name = idName id
(_, ty) = tidyOpenType env (idType id)
ty_msg = ppr ty
- ; add_warn name ty_msg }
+ ; add_warn name $
+ hang (text "Top-level binding with no type signature:")
+ 2 (pprPrefixName name <+> dcolon <+> ty_msg) }
- add_warn name ty_msg
+ add_warn name msg
= when (name `elemNameSet` sig_ns && export_check name)
- (addWarnAt (Reason flag) (getSrcSpan name)
- (get_msg name ty_msg))
+ (addWarnAt (Reason flag) (getSrcSpan name) msg)
export_check name
= not warn_only_exported || name `elemNameSet` exports
- get_msg name ty_msg
- = sep [ text "Top-level binding with no type signature:",
- nest 2 $ pprPrefixName name <+> dcolon <+> ty_msg ]
-
; add_sig_warns }
{-