module DDC.Type.Check.Config
( Config (..)
, configOfProfile)
where
import DDC.Type.DataDef
import DDC.Type.Env (SuperEnv, KindEnv, TypeEnv)
import qualified DDC.Core.Fragment as F
data Config n
= Config
{
configPrimDataDefs :: DataDefs n
, configPrimSupers :: SuperEnv n
, configPrimKinds :: KindEnv n
, configPrimTypes :: TypeEnv n
, configTrackedEffects :: Bool
, configTrackedClosures :: Bool
, configFunctionalEffects :: Bool
, configFunctionalClosures :: Bool }
configOfProfile :: F.Profile n -> Config n
configOfProfile profile
= Config
{ configPrimDataDefs = F.profilePrimDataDefs profile
, configPrimSupers = F.profilePrimSupers profile
, configPrimKinds = F.profilePrimKinds profile
, configPrimTypes = F.profilePrimTypes profile
, configTrackedEffects = F.featuresTrackedEffects
$ F.profileFeatures profile
, configTrackedClosures = F.featuresTrackedClosures
$ F.profileFeatures profile
, configFunctionalEffects = F.featuresFunctionalEffects
$ F.profileFeatures profile
, configFunctionalClosures = F.featuresFunctionalClosures
$ F.profileFeatures profile }