diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2016-08-12 15:52:07 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2016-08-12 17:34:12 +0100 |
commit | ac0e11252af149f085e2262200b7a1638b4a1553 (patch) | |
tree | 9001e3efcb0520338c0c9d1a38eb159c8ad1c3d4 /compiler/rename | |
parent | 9684dbb1d776a8e086f8db4191b3bcf826867dda (diff) | |
download | haskell-ac0e11252af149f085e2262200b7a1638b4a1553.tar.gz |
Improve missing-sig warning
Fixes Trac #12484
Diffstat (limited to 'compiler/rename')
-rw-r--r-- | compiler/rename/RnNames.hs | 20 |
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 } {- |