packages feed

uhc-light-1.1.8.7: src/UHC/Light/Compiler/EHC/CompilePhase/Translations.hs

module UHC.Light.Compiler.EHC.CompilePhase.Translations
( cpTranslateHs2EH
, cpTranslateEH2Output
, cpTranslateEH2Core )
where
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified UHC.Util.FastSeq as Seq
import Control.Monad.State
import UHC.Light.Compiler.EHC.Common
import UHC.Light.Compiler.EHC.CompileUnit
import UHC.Light.Compiler.EHC.CompileRun
import UHC.Light.Compiler.Base.Target
import qualified UHC.Light.Compiler.EH.MainAG as EHSem
import qualified UHC.Light.Compiler.HS.MainAG as HSSem
import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
import UHC.Light.Compiler.Core.Trf.ElimNonCodegenConstructs
import UHC.Light.Compiler.Base.Optimize
import UHC.Light.Compiler.EHC.CompilePhase.Module
import UHC.Light.Compiler.CodeGen.ValAccess as VA
import UHC.Light.Compiler.CodeGen.RefGenerator
import UHC.Light.Compiler.EHC.CompilePhase.Common
import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl









{-# LINE 97 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
cpTranslateHs2EH :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
cpTranslateHs2EH modNm
  =  do  {  cr <- get
         ;  let  (ecu,crsi,opts,fp) = crBaseInfo modNm cr
                 mbHsSem= ecuMbHSSem ecu
                 hsSem  = panicJust "cpTranslateHs2EH" mbHsSem
                 eh     = HSSem.eh_Syn_AGItf hsSem
                 errs   = Seq.toList $ HSSem.errSq_Syn_AGItf hsSem
         ;  when (isJust mbHsSem)
                 (do { cpUpdCU modNm (ecuStoreEH eh)
                     ; cpSetLimitErrsWhen 5 "Dependency/name analysis" errs
                     ; when (ehcOptEmitHS opts)
                            (liftIO $ putPPFPath (mkOutputFPath opts modNm fp "hs2") (HSSem.pp_Syn_AGItf hsSem) 1000)
                     ; when (ehcOptShowHS opts)
                            (liftIO $ putWidthPPLn 120 (HSSem.pp_Syn_AGItf hsSem))
                     })
         }

{-# LINE 117 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
cpTranslateEH2Output :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
cpTranslateEH2Output modNm
  =  do  {  cr <- get
         ;  let  (ecu,crsi,opts,fp) = crBaseInfo modNm cr
                 mbEHSem= ecuMbEHSem ecu
                 ehSem  = panicJust "cpTranslateEH2Output" mbEHSem
                 about  = "EH analyses: Type checking"
                 errs   = Seq.toList $ EHSem.allErrSq_Syn_AGItf ehSem
         ;  when (isJust mbEHSem)
                 (do { cpSetLimitErrsWhen 5 about errs
                     ; when (ehcOptEmitEH opts)
                            (liftIO $ putPPFPath (mkOutputFPath opts modNm fp "eh2") (EHSem.pp_Syn_AGItf ehSem) 1000)
                     ; when (ehcOptShowEH opts)
                            (liftIO $ putWidthPPLn 120 (EHSem.pp_Syn_AGItf ehSem))
                     }
                 )
         }

{-# LINE 162 "src/ehc/EHC/CompilePhase/Translations.chs" #-}
cpTranslateEH2Core :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ()
cpTranslateEH2Core modNm
  =  do  {  cr <- get
         ;  let  (ecu,crsi,opts,fp) = crBaseInfo modNm cr
                 mbEHSem= ecuMbEHSem ecu
                 ehSem  = panicJust "cpTranslateEH2Core" mbEHSem
                 core   = cmodTrfElimNonCodegenConstructs opts $ EHSem.cmodule_Syn_AGItf  ehSem
         ;  when (isJust mbEHSem)
                 (cpUpdCU modNm ( ecuStoreCore core
                                ))
         }