module GHC.Util.DynFlags (initGlobalDynFlags, baseDynFlags) where

import GHC.Driver.Session
import GHC.LanguageExtensions.Type
import Data.List.Extra
import Language.Haskell.GhclibParserEx.GHC.Settings.Config

baseDynFlags :: DynFlags
baseDynFlags :: DynFlags
baseDynFlags =
  -- The list of default enabled extensions is empty except for
  -- 'TemplateHaskellQuotes'. This is because:
  --  * The extensions to enable/disable are set exclusively in
  --    'parsePragmasIntoDynFlags' based solely on HSE parse flags
  --    (and source level annotations);
  --  * 'TemplateHaskellQuotes' is not a known HSE extension but IS
  --    needed if the GHC parse is to succeed for the unit-test at
  --    hlint.yaml:860
  let enable :: [Extension]
enable = [Extension
TemplateHaskellQuotes]
  in (DynFlags -> Extension -> DynFlags)
-> DynFlags -> [Extension] -> DynFlags
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' DynFlags -> Extension -> DynFlags
xopt_set (Settings -> LlvmConfig -> DynFlags
defaultDynFlags Settings
fakeSettings LlvmConfig
fakeLlvmConfig) [Extension]
enable


initGlobalDynFlags :: IO ()
initGlobalDynFlags :: IO ()
initGlobalDynFlags = DynFlags -> IO ()
setUnsafeGlobalDynFlags DynFlags
baseDynFlags