X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fiface%2FMkIface.lhs;h=e569c4756f0865645ed76dfc5086ce061f360f8c;hb=362e638ed31492d936a7039d90dc8d1db286944c;hp=e335f758bc423dab758ce2e71cfeeb552774af51;hpb=d5fbbe4c8ddc0202774aebead8b425d22ed43392;p=ghc-hetmet.git diff --git a/compiler/iface/MkIface.lhs b/compiler/iface/MkIface.lhs index e335f75..e569c47 100644 --- a/compiler/iface/MkIface.lhs +++ b/compiler/iface/MkIface.lhs @@ -181,6 +181,10 @@ code of A, and thereby haul in all the stuff reachable from it. haul in all the unfoldings for B, in case the module that imports A *is* compiled with -O. I think this is the case.] +SimonM [30/11/2007]: I believe the above is all out of date; the +current implementation doesn't do it this way. Instead, when any of +the dependencies of a declaration changes, the version of the +declaration itself changes. \begin{code} #include "HsVersions.h" @@ -409,7 +413,7 @@ mkIface_ hsc_env maybe_old_iface mi_fix_fn = mkIfaceFixCache fixities } -- Add version information - ; ext_ver_fn = mkParentVerFun hsc_env eps + ; ext_ver_fn = mkParentVerFun hsc_env eps ; (new_iface, no_change_at_all, pp_diffs, pp_orphs) = {-# SCC "versioninfo" #-} addVersionInfo ext_ver_fn maybe_old_iface @@ -704,6 +708,8 @@ computeChangedOccs ver_fn this_module old_usages eq_info -- return True if an external name has changed name_changed :: Name -> Bool name_changed nm + | isWiredInName nm -- Wired-in things don't get into interface + = False -- files and hence don't get into the ver_fn | Just ents <- lookupUFM usg_modmap (moduleName mod), Just v <- lookupUFM ents parent_occ = v < new_version