projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2006-01-06 16:30:17 by simonmar]
[ghc-hetmet.git]
/
ghc
/
compiler
/
iface
/
MkIface.lhs
diff --git
a/ghc/compiler/iface/MkIface.lhs
b/ghc/compiler/iface/MkIface.lhs
index
5c32a29
..
2f15ee3
100644
(file)
--- a/
ghc/compiler/iface/MkIface.lhs
+++ b/
ghc/compiler/iface/MkIface.lhs
@@
-185,7
+185,6
@@
import IfaceSyn ( IfaceDecl(..), IfaceClassOp(..), IfaceConDecl(..),
import LoadIface ( readIface, loadInterface )
import BasicTypes ( Version, initialVersion, bumpVersion )
import TcRnMonad
import LoadIface ( readIface, loadInterface )
import BasicTypes ( Version, initialVersion, bumpVersion )
import TcRnMonad
-import TcRnTypes ( mkModDeps )
import HscTypes ( ModIface(..), ModDetails(..),
ModGuts(..), IfaceExport,
HscEnv(..), hscEPS, Dependencies(..), FixItem(..),
import HscTypes ( ModIface(..), ModDetails(..),
ModGuts(..), IfaceExport,
HscEnv(..), hscEPS, Dependencies(..), FixItem(..),
@@
-215,7
+214,7
@@
import OccName ( OccName, OccEnv, mkOccEnv, lookupOccEnv, emptyOccEnv,
isEmptyOccSet, intersectOccSet, intersectsOccSet,
occNameFS, isTcOcc )
import Module ( Module, moduleFS,
isEmptyOccSet, intersectOccSet, intersectsOccSet,
occNameFS, isTcOcc )
import Module ( Module, moduleFS,
- ModLocation(..), mkSysModuleFS, moduleUserString,
+ ModLocation(..), mkModuleFS, moduleString,
ModuleEnv, emptyModuleEnv, lookupModuleEnv,
extendModuleEnv_C
)
ModuleEnv, emptyModuleEnv, lookupModuleEnv,
extendModuleEnv_C
)
@@
-641,7
+640,7
@@
bump_unless False v = bumpVersion v
\begin{code}
mkUsageInfo :: HscEnv
-> HomeModules
\begin{code}
mkUsageInfo :: HscEnv
-> HomeModules
- -> ModuleEnv (Module, Maybe Bool, SrcSpan)
+ -> ModuleEnv (Module, Bool, SrcSpan)
-> [(Module, IsBootInterface)]
-> NameSet -> IO [Usage]
mkUsageInfo hsc_env hmods dir_imp_mods dep_mods used_names
-> [(Module, IsBootInterface)]
-> NameSet -> IO [Usage]
mkUsageInfo hsc_env hmods dir_imp_mods dep_mods used_names
@@
-657,7
+656,6
@@
mk_usage_info pit hsc_env hmods dir_imp_mods dep_mods proto_used_names
= mapCatMaybes mkUsage dep_mods
-- ToDo: do we need to sort into canonical order?
where
= mapCatMaybes mkUsage dep_mods
-- ToDo: do we need to sort into canonical order?
where
- dflags = hsc_dflags hsc_env
hpt = hsc_HPT hsc_env
used_names = mkNameSet $ -- Eliminate duplicates
hpt = hsc_HPT hsc_env
used_names = mkNameSet $ -- Eliminate duplicates
@@
-677,9
+675,9
@@
mk_usage_info pit hsc_env hmods dir_imp_mods dep_mods proto_used_names
mod = nameModule name
add_item occs _ = occ:occs
mod = nameModule name
add_item occs _ = occ:occs
- import_all mod = case lookupModuleEnv dir_imp_mods mod of
- Just (_,imp_all,_) -> isNothing imp_all
- Nothing -> False
+ depend_on_exports mod = case lookupModuleEnv dir_imp_mods mod of
+ Just (_,no_imp,_) -> not no_imp
+ Nothing -> True
-- We want to create a Usage for a home module if
-- a) we used something from; has something in used_names
-- We want to create a Usage for a home module if
-- a) we used something from; has something in used_names
@@
-692,7
+690,7
@@
mk_usage_info pit hsc_env hmods dir_imp_mods dep_mods proto_used_names
| isNothing maybe_iface -- We can't depend on it if we didn't
|| not (isHomeModule hmods mod) -- even open the interface!
|| (null used_occs
| isNothing maybe_iface -- We can't depend on it if we didn't
|| not (isHomeModule hmods mod) -- even open the interface!
|| (null used_occs
- && not all_imported
+ && isNothing export_vers
&& not orphan_mod)
= Nothing -- Record no usage info
&& not orphan_mod)
= Nothing -- Record no usage info
@@
-713,9
+711,8
@@
mk_usage_info pit hsc_env hmods dir_imp_mods dep_mods proto_used_names
version_env = mi_ver_fn iface
mod_vers = mi_mod_vers iface
rules_vers = mi_rule_vers iface
version_env = mi_ver_fn iface
mod_vers = mi_mod_vers iface
rules_vers = mi_rule_vers iface
- all_imported = import_all mod
- export_vers | all_imported = Just (mi_exp_vers iface)
- | otherwise = Nothing
+ export_vers | depend_on_exports mod = Just (mi_exp_vers iface)
+ | otherwise = Nothing
-- The sort is to put them into canonical order
used_occs = lookupModuleEnv ent_map mod `orElse` []
-- The sort is to put them into canonical order
used_occs = lookupModuleEnv ent_map mod `orElse` []
@@
-729,7
+726,7
@@
mkIfaceExports :: NameSet -> [(Module, [GenAvailInfo OccName])]
-- Group by module and sort by occurrence
-- This keeps the list in canonical order
mkIfaceExports exports
-- Group by module and sort by occurrence
-- This keeps the list in canonical order
mkIfaceExports exports
- = [ (mkSysModuleFS fs, eltsFM avails)
+ = [ (mkModuleFS fs, eltsFM avails)
| (fs, avails) <- fmToList groupFM
]
where
| (fs, avails) <- fmToList groupFM
]
where
@@
-771,7
+768,7
@@
checkOldIface :: HscEnv
checkOldIface hsc_env mod_summary source_unchanged maybe_iface
= do { showPass (hsc_dflags hsc_env)
checkOldIface hsc_env mod_summary source_unchanged maybe_iface
= do { showPass (hsc_dflags hsc_env)
- ("Checking old interface for " ++ moduleUserString (ms_mod mod_summary)) ;
+ ("Checking old interface for " ++ moduleString (ms_mod mod_summary)) ;
; initIfaceCheck hsc_env $
check_old_iface mod_summary source_unchanged maybe_iface
; initIfaceCheck hsc_env $
check_old_iface mod_summary source_unchanged maybe_iface