X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Frename%2FRnEnv.lhs;h=feea0c5e2a23b6b60e1b03dfc4328a687f513faf;hb=e95ee1f718c6915c478005aad8af81705357d6ab;hp=c2b7a7b52f56fe74a7b2e7023e7f20ffe166d794;hpb=786932468faac49aafe20b65eabc8bdf465fbc9d;p=ghc-hetmet.git diff --git a/compiler/rename/RnEnv.lhs b/compiler/rename/RnEnv.lhs index c2b7a7b..feea0c5 100644 --- a/compiler/rename/RnEnv.lhs +++ b/compiler/rename/RnEnv.lhs @@ -28,7 +28,7 @@ module RnEnv ( checkDupRdrNames, checkDupAndShadowedRdrNames, checkDupNames, checkDupAndShadowedNames, addFvRn, mapFvRn, mapMaybeFvRn, mapFvRnCPS, - warnUnusedMatches, warnUnusedModules, warnUnusedImports, + warnUnusedMatches, warnUnusedTopBinds, warnUnusedLocalBinds, dataTcOccs, unknownNameErr, kindSigErr, perhapsForallMsg ) where @@ -51,7 +51,6 @@ import NameEnv import UniqFM import DataCon ( dataConFieldLabels ) import OccName -import Module ( ModuleName ) import PrelNames ( mkUnboundName, rOOT_MAIN, iNTERACTIVE, consDataConKey, forall_tv_RDR ) import Unique @@ -1028,22 +1027,19 @@ mapFvRnCPS f (x:xs) cont = f x $ \ x' -> %************************************************************************ \begin{code} -warnUnusedModules :: [(ModuleName,SrcSpan)] -> RnM () -warnUnusedModules mods - = ifOptM Opt_WarnUnusedImports (mapM_ bleat mods) - where - bleat (mod,loc) = addWarnAt loc (mk_warn mod) - mk_warn m = vcat [ptext (sLit "Module") <+> quotes (ppr m) - <+> text "is imported, but nothing from it is used,", - nest 2 (ptext (sLit "except perhaps instances visible in") - <+> quotes (ppr m)), - ptext (sLit "To suppress this warning, use:") - <+> ptext (sLit "import") <+> ppr m <> parens empty ] - - -warnUnusedImports, warnUnusedTopBinds :: [GlobalRdrElt] -> RnM () -warnUnusedImports gres = ifOptM Opt_WarnUnusedImports (warnUnusedGREs gres) -warnUnusedTopBinds gres = ifOptM Opt_WarnUnusedBinds (warnUnusedGREs gres) +warnUnusedTopBinds :: [GlobalRdrElt] -> RnM () +warnUnusedTopBinds gres + = ifOptM Opt_WarnUnusedBinds + $ do isBoot <- tcIsHsBoot + let noParent gre = case gre_par gre of + NoParent -> True + ParentIs _ -> False + -- Don't warn about unused bindings with parents in + -- .hs-boot files, as you are sometimes required to give + -- unused bindings (trac #3449). + gres' = if isBoot then filter noParent gres + else gres + warnUnusedGREs gres' warnUnusedLocalBinds, warnUnusedMatches :: [Name] -> FreeVars -> RnM () warnUnusedLocalBinds = check_unused Opt_WarnUnusedBinds