module UHC.Light.Compiler.EHC.InitialSetup
( initialHSSem
, initialEHSem
, initialCEnv
, initialCoreRunState
, initialHSSemMod )
where
import qualified Data.Map as Map
import UHC.Light.Compiler.EHC.Common
import UHC.Light.Compiler.EHC.CompileRun.Base
import qualified UHC.Light.Compiler.HS.MainAG as HSSem
import qualified UHC.Light.Compiler.EH.Main as EHSem
import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
import qualified UHC.Light.Compiler.CoreRun as CoreRun
import UHC.Light.Compiler.LamInfo
import UHC.Light.Compiler.CodeGen.CEnv
import qualified UHC.Light.Compiler.Gam.ClGam as Pr (initClGam)
import qualified UHC.Light.Compiler.HS.ModImpExp as HSSemMod
import UHC.Light.Compiler.CodeGen.ImportUsedModules
import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
import UHC.Light.Compiler.Pred.ToCHR (initCHRStore)
initialHSSem :: EHCOpts -> HSSem.Inh_AGItf
initialHSSem opts
= HSSem.Inh_AGItf
{ HSSem.opts_Inh_AGItf = opts
, HSSem.idGam_Inh_AGItf = HSSem.tyGam2IdDefOccGam initTyGam
`gamUnion` HSSem.kiGam2IdDefOccGam initKiGam
`gamUnion` HSSem.clGam2IdDefOccGam Pr.initClGam
, HSSem.gUniq_Inh_AGItf = uidStart
, HSSem.isTopMod_Inh_AGItf = False
, HSSem.moduleNm_Inh_AGItf = hsnUnknown
, HSSem.modInScope_Inh_AGItf = Map.empty
, HSSem.modEntToOrig_Inh_AGItf = Map.empty
, HSSem.fixityGam_Inh_AGItf = initFixityGam
, HSSem.topInstanceNmL_Inh_AGItf = []
}
initialEHSem :: EHCOpts -> FPath -> EHSem.Inh_AGItf
initialEHSem opts fp
= EHSem.Inh_AGItf
{ EHSem.moduleNm_Inh_AGItf = mkHNm (fpathBase fp)
, EHSem.gUniq_Inh_AGItf = uidStart
, EHSem.opts_Inh_AGItf = opts
, EHSem.isMainMod_Inh_AGItf = False
, EHSem.idQualGam_Inh_AGItf = emptyGam
, EHSem.valGam_Inh_AGItf = emptyGam
, EHSem.dataGam_Inh_AGItf = emptyGam
, EHSem.tyGam_Inh_AGItf = initTyGam
, EHSem.tyKiGam_Inh_AGItf = initTyKiGam
, EHSem.polGam_Inh_AGItf = initPolGam
, EHSem.kiGam_Inh_AGItf = initKiGam
, EHSem.clGam_Inh_AGItf = Pr.initClGam
, EHSem.clDfGam_Inh_AGItf = emptyGam
, EHSem.chrStore_Inh_AGItf = initCHRStore
, EHSem.importUsedModules_Inh_AGItf = emptyImportUsedModules
, EHSem.moduleImportExportImpl_Inh_AGItf = emptyModuleImportExportImpl
}
initialCEnv :: CEnv
initialCEnv
= emptyCEnv
{ _cenvLamMp = initLamMp
}
initialCoreRunState :: EHCompileRunCoreRunStateInfo
initialCoreRunState = emptyEHCompileRunCoreRunStateInfo
initialHSSemMod :: EHCOpts -> HSSemMod.Inh_AGItf
initialHSSemMod opts
= HSSemMod.Inh_AGItf
{ HSSemMod.gUniq_Inh_AGItf = uidStart
, HSSemMod.moduleNm_Inh_AGItf = hsnUnknown
, HSSemMod.opts_Inh_AGItf = opts
}