projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
trac #1789 (warnings for missing import lists)
[ghc-hetmet.git]
/
compiler
/
rename
/
RnNames.lhs
diff --git
a/compiler/rename/RnNames.lhs
b/compiler/rename/RnNames.lhs
index
9fcfd28
..
21731ad
100644
(file)
--- a/
compiler/rename/RnNames.lhs
+++ b/
compiler/rename/RnNames.lhs
@@
-6,7
+6,8
@@
\begin{code}
module RnNames (
rnImports, getLocalNonValBinders,
\begin{code}
module RnNames (
rnImports, getLocalNonValBinders,
- rnExports, extendGlobalRdrEnvRn,
+ rnExports, extendGlobalRdrEnvRn,
+ gresFromAvails,
reportUnusedNames, finishWarnings,
) where
reportUnusedNames, finishWarnings,
) where
@@
-69,8
+70,8
@@
rnImports imports
when (notNull prel_imports) $ addWarn (implicitPreludeWarn)
)
when (notNull prel_imports) $ addWarn (implicitPreludeWarn)
)
- stuff1 <- mapM (rnImportDecl this_mod) (prel_imports ++ ordinary)
- stuff2 <- mapM (rnImportDecl this_mod) source
+ stuff1 <- mapM (rnImportDecl this_mod implicit_prelude) (prel_imports ++ ordinary)
+ stuff2 <- mapM (rnImportDecl this_mod implicit_prelude) source
let (decls, rdr_env, imp_avails,hpc_usage) = combine (stuff1 ++ stuff2)
return (decls, rdr_env, imp_avails,hpc_usage)
let (decls, rdr_env, imp_avails,hpc_usage) = combine (stuff1 ++ stuff2)
return (decls, rdr_env, imp_avails,hpc_usage)
@@
-85,11
+86,11
@@
rnImports imports
imp_avails1 `plusImportAvails` imp_avails2,
hpc_usage1 || hpc_usage2)
imp_avails1 `plusImportAvails` imp_avails2,
hpc_usage1 || hpc_usage2)
-rnImportDecl :: Module
+rnImportDecl :: Module -> Bool
-> LImportDecl RdrName
-> RnM (LImportDecl Name, GlobalRdrEnv, ImportAvails,AnyHpcUsage)
-> LImportDecl RdrName
-> RnM (LImportDecl Name, GlobalRdrEnv, ImportAvails,AnyHpcUsage)
-rnImportDecl this_mod (L loc (ImportDecl loc_imp_mod_name mb_pkg want_boot
+rnImportDecl this_mod implicit_prelude (L loc (ImportDecl loc_imp_mod_name mb_pkg want_boot
qual_only as_mod imp_details))
= setSrcSpan loc $ do
qual_only as_mod imp_details))
= setSrcSpan loc $ do
@@
-103,6
+104,11
@@
rnImportDecl this_mod (L loc (ImportDecl loc_imp_mod_name mb_pkg want_boot
imp_mod_name = unLoc loc_imp_mod_name
doc = ppr imp_mod_name <+> ptext (sLit "is directly imported")
imp_mod_name = unLoc loc_imp_mod_name
doc = ppr imp_mod_name <+> ptext (sLit "is directly imported")
+ case imp_details of
+ (Just _) -> return ()
+ Nothing -> when (not (implicit_prelude && imp_mod_name == pRELUDE_NAME)) $
+ ifOptM Opt_WarnMissingImportList (addWarn (missingImportListWarn imp_mod_name))
+
iface <- loadSrcInterface doc imp_mod_name want_boot mb_pkg
-- Compiler sanity check: if the import didn't say
iface <- loadSrcInterface doc imp_mod_name want_boot mb_pkg
-- Compiler sanity check: if the import didn't say
@@
-1446,6
+1452,10
@@
nullModuleExport :: ModuleName -> SDoc
nullModuleExport mod
= ptext (sLit "The export item `module") <+> ppr mod <> ptext (sLit "' exports nothing")
nullModuleExport mod
= ptext (sLit "The export item `module") <+> ppr mod <> ptext (sLit "' exports nothing")
+missingImportListWarn :: ModuleName -> SDoc
+missingImportListWarn mod
+ = ptext (sLit "The module") <+> quotes (ppr mod) <+> ptext (sLit "is missing an import list")
+
moduleWarn :: ModuleName -> WarningTxt -> SDoc
moduleWarn mod (WarningTxt txt)
= sep [ ptext (sLit "Module") <+> quotes (ppr mod) <> ptext (sLit ":"),
moduleWarn :: ModuleName -> WarningTxt -> SDoc
moduleWarn mod (WarningTxt txt)
= sep [ ptext (sLit "Module") <+> quotes (ppr mod) <> ptext (sLit ":"),