Commit 2d367f85 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com

Fix -fwarn-missing-import-lists (fix Trac #4489)

parent bf6dd833
......@@ -108,16 +108,14 @@ rnImportDecl this_mod implicit_prelude
imp_mod_name = unLoc loc_imp_mod_name
doc = ppr imp_mod_name <+> ptext (sLit "is directly imported")
let isExplicit lie = case unLoc lie of
IEThingAll _ -> False
_ -> True
-- Check for a missing import list
-- (Opt_WarnMissingImportList also checks for T(..) items
-- but that is done in checkDodgyImport below)
case imp_details of
Just (False, lies)
| all isExplicit lies ->
return ()
_ ->
unless implicit_prelude $
ifDOptM Opt_WarnMissingImportList (addWarn (missingImportListWarn imp_mod_name))
Just (False, _) -> return ()
_ | implicit_prelude -> return ()
| otherwise -> ifDOptM Opt_WarnMissingImportList $
addWarn (missingImportListWarn imp_mod_name)
iface <- loadSrcInterface doc imp_mod_name want_boot mb_pkg
......@@ -588,6 +586,9 @@ filterImports iface decl_spec (Just (want_hiding, import_items)) all_avails
| IEThingAll n <- ieRdr, (_, AvailTC _ [_]):_ <- stuff
= ifDOptM Opt_WarnDodgyImports (addWarn (dodgyImportWarn n))
-- NB. use the RdrName for reporting the warning
| IEThingAll {} <- ieRdr
= ifDOptM Opt_WarnMissingImportList $
addWarn (missingImportListItem ieRdr)
checkDodgyImport _
= return ()
......@@ -1552,6 +1553,10 @@ missingImportListWarn :: ModuleName -> SDoc
missingImportListWarn mod
= ptext (sLit "The module") <+> quotes (ppr mod) <+> ptext (sLit "does not have an explicit import list")
missingImportListItem :: IE RdrName -> SDoc
missingImportListItem ie
= ptext (sLit "The import item") <+> quotes (ppr ie) <+> ptext (sLit "does not have an explicit import list")
moduleWarn :: ModuleName -> WarningTxt -> SDoc
moduleWarn mod (WarningTxt txt)
= sep [ ptext (sLit "Module") <+> quotes (ppr mod) <> ptext (sLit ":"),
......
......@@ -1143,7 +1143,8 @@
<row>
<entry><option>-fwarn-missing-import-lists</option></entry>
<entry>warn when explicit imports lack an import list</entry>
<entry>warn when an import declaration does not explicitly
list all the names brought into scope</entry>
<entry>dynamic</entry>
<entry><option>-fnowarn-missing-import-lists</option></entry>
</row>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment