module DDC.Core.Parser.Context
( Context (..)
, contextOfProfile)
where
import DDC.Core.Fragment
import DDC.Data.SourcePos
import Data.Text (Text)
data Context n
= Context
{ contextTrackedEffects :: Bool
, contextTrackedClosures :: Bool
, contextFunctionalEffects :: Bool
, contextFunctionalClosures :: Bool
, contextMakeStringName :: Maybe (SourcePos -> Text -> n) }
contextOfProfile :: Profile n -> Context n
contextOfProfile profile
= Context
{ contextTrackedEffects = featuresTrackedEffects
$ profileFeatures profile
, contextTrackedClosures = featuresTrackedClosures
$ profileFeatures profile
, contextFunctionalEffects = featuresFunctionalEffects
$ profileFeatures profile
, contextFunctionalClosures = featuresFunctionalClosures
$ profileFeatures profile
, contextMakeStringName = profileMakeStringName profile
}