X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Frename%2FRnNames.lhs;h=1b02331064519499fcd2b3deddca9fc8fe7de089;hb=fffba9e37c59f6b03bb79dcafb818b88abc0ed47;hp=877974c87f48afe41fb64e0a121e56880d08290f;hpb=9bedea20f62a1da832c69833c39dd1d15e6ee9a3;p=ghc-hetmet.git diff --git a/ghc/compiler/rename/RnNames.lhs b/ghc/compiler/rename/RnNames.lhs index 877974c..1b02331 100644 --- a/ghc/compiler/rename/RnNames.lhs +++ b/ghc/compiler/rename/RnNames.lhs @@ -10,7 +10,7 @@ module RnNames ( #include "HsVersions.h" -import CmdLineOpts ( DynFlags, DynFlag(..), dopt, opt_NoImplicitPrelude ) +import CmdLineOpts ( DynFlag(..), opt_NoImplicitPrelude ) import HsSyn ( HsModule(..), HsDecl(..), IE(..), ieName, ImportDecl(..), collectTopBinders @@ -18,9 +18,8 @@ import HsSyn ( HsModule(..), HsDecl(..), IE(..), ieName, ImportDecl(..), import RdrHsSyn ( RdrNameIE, RdrNameImportDecl, RdrNameHsModule, RdrNameHsDecl ) -import RnIfaces ( getInterfaceExports, getDeclBinders, - recordLocalSlurps, checkModUsage, - outOfDate, findAndReadIface ) +import RnIfaces ( getInterfaceExports, recordLocalSlurps ) +import RnHiFiles ( getDeclBinders ) import RnEnv import RnMonad @@ -34,8 +33,7 @@ import Name ( Name, nameSrcLoc, setLocalNameSort, nameOccName, nameEnvElts ) import HscTypes ( Provenance(..), ImportReason(..), GlobalRdrEnv, GenAvailInfo(..), AvailInfo, Avails, AvailEnv ) -import RdrName ( RdrName, rdrNameOcc, setRdrNameOcc, mkRdrQual, mkRdrUnqual, - isQual, isUnqual ) +import RdrName ( RdrName, rdrNameOcc, setRdrNameOcc, mkRdrQual, mkRdrUnqual, isUnqual ) import OccName ( setOccNameSpace, dataName ) import NameSet ( elemNameSet, emptyNameSet ) import Outputable @@ -59,16 +57,15 @@ getGlobalNames :: RdrNameHsModule -> RnMG (Maybe (GlobalRdrEnv, -- Maps all in-scope things GlobalRdrEnv, -- Maps just *local* things Avails, -- The exported stuff - AvailEnv, -- Maps a name to its parent AvailInfo + AvailEnv -- Maps a name to its parent AvailInfo -- Just for in-scope things only - Maybe ParsedIface -- The old interface file, if any )) -- Nothing => no need to recompile getGlobalNames (HsModule this_mod _ exports imports decls _ mod_loc) = -- These two fix-loops are to get the right -- provenance information into a Name - fixRn ( \ ~(Just (rec_gbl_env, _, rec_export_avails, _, _)) -> + fixRn ( \ ~(Just (rec_gbl_env, _, rec_export_avails, _)) -> let rec_unqual_fn :: Name -> Bool -- Is this chap in scope unqualified? @@ -126,25 +123,19 @@ getGlobalNames (HsModule this_mod _ exports imports decls _ mod_loc) -- to compile A, and of course that doesn't include B.f. That's -- why we wait till after the plusEnv stuff to do the early-exit. - -- Check For eacly exit + -- Check For early exit checkErrsRn `thenRn` \ no_errs_so_far -> if not no_errs_so_far then -- Found errors already, so exit now returnRn Nothing else - checkEarlyExit this_mod `thenRn` \ (up_to_date, old_iface) -> - if up_to_date then - -- Interface files are sufficiently unchanged - putDocRn (text "Compilation IS NOT required") `thenRn_` - returnRn Nothing - else -- PROCESS EXPORT LISTS exportsFromAvail this_mod exports all_avails gbl_env `thenRn` \ export_avails -> -- ALL DONE - returnRn (Just (gbl_env, local_gbl_env, export_avails, global_avail_env, old_iface)) + returnRn (Just (gbl_env, local_gbl_env, export_avails, global_avail_env)) ) where all_imports = prel_imports ++ imports @@ -169,35 +160,6 @@ getGlobalNames (HsModule this_mod _ exports imports decls _ mod_loc) \end{code} \begin{code} -checkEarlyExit mod_name - = traceRn (text "Considering whether compilation is required...") `thenRn_` - - -- Read the old interface file, if any, for the module being compiled - findAndReadIface doc_str mod_name False {- Not hi-boot -} `thenRn` \ maybe_iface -> - - -- CHECK WHETHER WE HAVE IT ALREADY - case maybe_iface of - Left err -> -- Old interface file not found, so we'd better bail out - traceRn (vcat [ptext SLIT("No old interface file for") <+> ppr mod_name, - err]) `thenRn_` - returnRn (outOfDate, Nothing) - - Right iface - | panic "checkEarlyExit: ???: not opt_SourceUnchanged" - -> -- Source code changed - traceRn (nest 4 (text "source file changed or recompilation check turned off")) `thenRn_` - returnRn (False, Just iface) - - | otherwise - -> -- Source code unchanged and no errors yet... carry on - checkModUsage (pi_usages iface) `thenRn` \ up_to_date -> - returnRn (up_to_date, Just iface) - where - -- Only look in current directory, with suffix .hi - doc_str = sep [ptext SLIT("need usage info from"), ppr mod_name] -\end{code} - -\begin{code} importsFromImportDecl :: (Name -> Bool) -- OK to omit qualifier -> RdrNameImportDecl -> RnMG (GlobalRdrEnv,