module UHC.Light.Compiler.EHC.InitialSetup
( initialHSSem
, initialEHSem
, initialCore2GrSem
, initialHSSemMod )
where
import qualified Data.Map as Map
import UHC.Light.Compiler.EHC.Common
import qualified UHC.Light.Compiler.HS.MainAG as HSSem
import qualified UHC.Light.Compiler.EH.MainAG as EHSem
import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
import UHC.Light.Compiler.LamInfo
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 (initScopedPredStore)
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 = initScopedPredStore
, EHSem.importUsedModules_Inh_AGItf = emptyImportUsedModules
, EHSem.moduleImportExportImpl_Inh_AGItf = emptyModuleImportExportImpl
}
initialCore2GrSem :: EHCOpts -> Core2GrSem.Inh_CodeAGItf
initialCore2GrSem opts
= Core2GrSem.Inh_CodeAGItf
{ Core2GrSem.gUniq_Inh_CodeAGItf = uidStart
, Core2GrSem.dataGam_Inh_CodeAGItf = emptyGam
, Core2GrSem.opts_Inh_CodeAGItf = opts
, Core2GrSem.lamMp_Inh_CodeAGItf = initLamMp
, Core2GrSem.importUsedModules_Inh_CodeAGItf = emptyImportUsedModules
}
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
}