Haskell Program Coverage
[ghc-hetmet.git] / compiler / main / HscMain.lhs
index 01c27ab..6c09b97 100644 (file)
@@ -90,9 +90,10 @@ import ParserCoreUtils
 import FastString
 import UniqFM          ( emptyUFM )
 import Bag             ( unitBag )
-import Monad           ( unless )
-import IO
-import DATA_IOREF      ( newIORef, readIORef )
+
+import Control.Monad
+import System.IO
+import Data.IORef
 \end{code}
 
 
@@ -465,7 +466,7 @@ hscFileFrontEnd =
                          -------------------
                          -- DESUGAR
                          -------------------
-                         -> {-# SCC "DeSugar" #-} deSugar hsc_env tc_result
+                         -> {-# SCC "DeSugar" #-} deSugar hsc_env (ms_location mod_summary) tc_result
 
 --------------------------------------------------------------
 -- Simplifiers
@@ -527,7 +528,7 @@ hscNormalIface simpl_result
                <- {-# SCC "MkFinalIface" #-}
                   mkIface hsc_env maybe_old_iface simpl_result details
        -- Emit external core
-       emitExternalCore (hsc_dflags hsc_env) (mg_exports simpl_result) cg_guts -- Move this? --Lemmih 03/07/2006
+       emitExternalCore (hsc_dflags hsc_env) (availsToNameSet (mg_exports simpl_result)) cg_guts -- Move this? --Lemmih 03/07/2006
        dumpIfaceStats hsc_env
 
            -------------------
@@ -541,9 +542,11 @@ hscNormalIface simpl_result
 hscWriteIface :: (ModIface, Bool, ModDetails, a) -> Comp (ModIface, ModDetails, a)
 hscWriteIface (iface, no_change, details, a)
     = do mod_summary <- gets compModSummary
+         hsc_env <- gets compHscEnv
+         let dflags = hsc_dflags hsc_env
          liftIO $ do
          unless no_change
-           $ writeIfaceFile (ms_location mod_summary) iface
+           $ writeIfaceFile dflags (ms_location mod_summary) iface
          return (iface, details, a)
 
 hscIgnoreIface :: (ModIface, Bool, ModDetails, a) -> Comp (ModIface, ModDetails, a)
@@ -580,7 +583,8 @@ hscCompile cgguts
                      cg_tycons   = tycons,
                      cg_dir_imps = dir_imps,
                      cg_foreign  = foreign_stubs,
-                     cg_dep_pkgs = dependencies } = cgguts
+                     cg_dep_pkgs = dependencies,
+                    cg_hpc_info = hpc_info } = cgguts
              dflags = hsc_dflags hsc_env
              location = ms_location mod_summary
              data_tycons = filter isDataTyCon tycons
@@ -600,7 +604,7 @@ hscCompile cgguts
          abstractC <- {-# SCC "CodeGen" #-}
                       codeGen dflags this_mod data_tycons
                               foreign_stubs dir_imps cost_centre_info
-                              stg_binds
+                              stg_binds hpc_info
          ------------------  Code output -----------------------
          (stub_h_exists,stub_c_exists)
              <- codeOutput dflags this_mod location foreign_stubs