GHC/Driver/Config.hs

    -- | Subsystem configuration
    module GHC.Driver.Config
       ( initOptCoercionOpts
       , initSimpleOpts
       , initParserOpts
       )
    where

    import GHC.Prelude

    import GHC.Driver.Session
    import GHC.Core.SimpleOpt
    import GHC.Core.Coercion.Opt
    import GHC.Parser.Lexer

    -- | Initialise coercion optimiser configuration from DynFlags
    initOptCoercionOpts :: DynFlags -> OptCoercionOpts
    initOptCoercionOpts dflags = OptCoercionOpts
       { optCoercionEnabled = not (hasNoOptCoercion dflags)
       }

    -- | Initialise Simple optimiser configuration from DynFlags
    initSimpleOpts :: DynFlags -> SimpleOpts
    initSimpleOpts dflags = SimpleOpts
       { so_uf_opts = unfoldingOpts dflags
       , so_co_opts = initOptCoercionOpts dflags
       }

    -- | Extracts the flag information needed for parsing
    initParserOpts :: DynFlags -> ParserOpts
    initParserOpts =
      mkParserOpts
        <$> warningFlags
        <*> extensionFlags
        <*> safeImportsOn
        <*> gopt Opt_Haddock
        <*> gopt Opt_KeepRawTokenStream
        <*> const True