Use defaultDynFlags to obtain ghc’s DynFlags

This way brittany can avoid dealing with incompatibilities in DynFlags
structure between ghc versions (e.g. different versions having
different fields).
pull/363/head
Sergey Vinokurov 2022-01-06 23:57:07 +00:00
parent ad88ba3f57
commit 3996efd5eb
No known key found for this signature in database
GPG Key ID: D6CD29530F98D6B8
1 changed files with 23 additions and 207 deletions

View File

@ -1,29 +1,21 @@
{-# OPTIONS_GHC -Wno-implicit-prelude #-} {-# OPTIONS_GHC -Wno-implicit-prelude #-}
module Language.Haskell.Brittany.Internal.ParseModule where module Language.Haskell.Brittany.Internal.ParseModule (parseModule) where
import qualified Control.Monad as Monad import qualified Control.Monad as Monad
import qualified Control.Monad.IO.Class as IO import qualified Control.Monad.IO.Class as IO
import qualified Control.Monad.Trans.Except as Except import qualified Control.Monad.Trans.Except as Except
import qualified Data.Set as Set
import qualified GHC import qualified GHC
import qualified GHC.ByteOrder import qualified GHC.ByteOrder
import qualified GHC.Data.Bag import qualified GHC.Data.Bag
import qualified GHC.Data.EnumSet
import qualified GHC.Data.StringBuffer import qualified GHC.Data.StringBuffer
import qualified GHC.Driver.Session import qualified GHC.Driver.Session
import qualified GHC.Parser.Header import qualified GHC.Parser.Header
import qualified GHC.Platform import qualified GHC.Platform
import qualified GHC.Settings import qualified GHC.Settings
import qualified GHC.Types.Basic
import qualified GHC.Types.SrcLoc import qualified GHC.Types.SrcLoc
import qualified GHC.Unit.Module.Name
import qualified GHC.Unit.State
import qualified GHC.Unit.Types
import qualified GHC.Utils.Error import qualified GHC.Utils.Error
import qualified GHC.Utils.Fingerprint import qualified GHC.Utils.Fingerprint
import qualified GHC.Utils.Misc
import qualified GHC.Utils.Ppr.Colour
import qualified Language.Haskell.GHC.ExactPrint.Parsers as ExactPrint import qualified Language.Haskell.GHC.ExactPrint.Parsers as ExactPrint
import qualified Language.Haskell.GHC.ExactPrint.Types as ExactPrint import qualified Language.Haskell.GHC.ExactPrint.Types as ExactPrint
@ -77,184 +69,18 @@ handleErrorMessages
handleErrorMessages = handleErrorMessages =
Except.throwE . mappend "errorMessages: " . show . GHC.Data.Bag.bagToList Except.throwE . mappend "errorMessages: " . show . GHC.Data.Bag.bagToList
initialCfgWeights :: GHC.Driver.Session.CfgWeights
initialCfgWeights = GHC.Driver.Session.CFGWeights
{ GHC.Driver.Session.backEdgeBonus = 0
, GHC.Driver.Session.callWeight = 0
, GHC.Driver.Session.condBranchWeight = 0
, GHC.Driver.Session.infoTablePenalty = 0
, GHC.Driver.Session.likelyCondWeight = 0
, GHC.Driver.Session.switchWeight = 0
, GHC.Driver.Session.uncondWeight = 0
, GHC.Driver.Session.unlikelyCondWeight = 0
}
initialDynFlags :: GHC.Driver.Session.DynFlags initialDynFlags :: GHC.Driver.Session.DynFlags
initialDynFlags = GHC.Driver.Session.DynFlags initialDynFlags = GHC.Driver.Session.defaultDynFlags initialSettings initialLlvmConfig
{ GHC.Driver.Session.avx = False
, GHC.Driver.Session.avx2 = False initialSettings :: GHC.Driver.Session.Settings
, GHC.Driver.Session.avx512cd = False initialSettings = GHC.Driver.Session.Settings
, GHC.Driver.Session.avx512er = False { GHC.Driver.Session.sGhcNameVersion = initialGhcNameVersion
, GHC.Driver.Session.avx512f = False , GHC.Driver.Session.sFileSettings = initialFileSettings
, GHC.Driver.Session.avx512pf = False , GHC.Driver.Session.sTargetPlatform = initialTargetPlatform
, GHC.Driver.Session.binBlobThreshold = 0 , GHC.Driver.Session.sToolSettings = initialToolSettings
, GHC.Driver.Session.bmiVersion = Nothing , GHC.Driver.Session.sPlatformMisc = initialPlatformMisc
, GHC.Driver.Session.cachedPlugins = [] , GHC.Driver.Session.sPlatformConstants = initialPlatformConstants
, GHC.Driver.Session.canGenerateDynamicToo = error "canGenerateDynamicToo" , GHC.Driver.Session.sRawSettings = []
, GHC.Driver.Session.canUseColor = False
, GHC.Driver.Session.cfgWeightInfo = initialCfgWeights
, GHC.Driver.Session.cmdlineFrameworks = []
, GHC.Driver.Session.cmmProcAlignment = Nothing
, GHC.Driver.Session.colScheme = GHC.Utils.Ppr.Colour.defaultScheme
, GHC.Driver.Session.debugLevel = 0
, GHC.Driver.Session.depExcludeMods = []
, GHC.Driver.Session.depIncludeCppDeps = False
, GHC.Driver.Session.depIncludePkgDeps = False
, GHC.Driver.Session.depMakefile = ""
, GHC.Driver.Session.depSuffixes = []
, GHC.Driver.Session.dirsToClean = error "dirsToClean"
, GHC.Driver.Session.dump_action = \_ _ _ _ _ _ -> pure ()
, GHC.Driver.Session.dumpDir = Nothing
, GHC.Driver.Session.dumpFlags = GHC.Data.EnumSet.fromList []
, GHC.Driver.Session.dumpPrefix = Nothing
, GHC.Driver.Session.dumpPrefixForce = Nothing
, GHC.Driver.Session.dylibInstallName = Nothing
, GHC.Driver.Session.dynHiSuf = ""
, GHC.Driver.Session.dynLibLoader = GHC.Driver.Session.Deployable
, GHC.Driver.Session.dynObjectSuf = ""
, GHC.Driver.Session.dynOutputFile = Nothing
, GHC.Driver.Session.enableTimeStats = False
, GHC.Driver.Session.extensionFlags = GHC.Data.EnumSet.fromList []
, GHC.Driver.Session.extensions = []
, GHC.Driver.Session.fatalWarningFlags = GHC.Data.EnumSet.fromList []
, GHC.Driver.Session.fileSettings = initialFileSettings
, GHC.Driver.Session.filesToClean = error "filesToClean"
, GHC.Driver.Session.floatLamArgs = Nothing
, GHC.Driver.Session.flushErr = GHC.Driver.Session.defaultFlushErr
, GHC.Driver.Session.flushOut = GHC.Driver.Session.defaultFlushOut
, GHC.Driver.Session.frameworkPaths = []
, GHC.Driver.Session.frontendPluginOpts = []
, GHC.Driver.Session.generalFlags = GHC.Data.EnumSet.fromList []
, GHC.Driver.Session.generatedDumps = error "generatedDumps"
, GHC.Driver.Session.ghcHeapSize = Nothing
, GHC.Driver.Session.ghciHistSize = 0
, GHC.Driver.Session.ghciScripts = []
, GHC.Driver.Session.ghcLink = GHC.Driver.Session.NoLink
, GHC.Driver.Session.ghcMode = GHC.Driver.Session.OneShot
, GHC.Driver.Session.ghcNameVersion = initialGhcNameVersion
, GHC.Driver.Session.ghcVersionFile = Nothing
, GHC.Driver.Session.haddockOptions = Nothing
, GHC.Driver.Session.hcSuf = ""
, GHC.Driver.Session.hiDir = Nothing
, GHC.Driver.Session.hieDir = Nothing
, GHC.Driver.Session.hieSuf = ""
, GHC.Driver.Session.historySize = 0
, GHC.Driver.Session.hiSuf = ""
, GHC.Driver.Session.homeUnitId = GHC.Unit.Types.stringToUnitId ""
, GHC.Driver.Session.homeUnitInstanceOfId = Nothing
, GHC.Driver.Session.homeUnitInstantiations = []
, GHC.Driver.Session.hooks = error "hooks"
, GHC.Driver.Session.hpcDir = ""
, GHC.Driver.Session.hscTarget = GHC.Driver.Session.HscNothing
, GHC.Driver.Session.ignorePackageFlags = []
, GHC.Driver.Session.importPaths = []
, GHC.Driver.Session.includePaths = initialIncludeSpecs
, GHC.Driver.Session.incoherentOnLoc = initialSrcSpan
, GHC.Driver.Session.initialUnique = 0
, GHC.Driver.Session.inlineCheck = Nothing
, GHC.Driver.Session.interactivePrint = Nothing
, GHC.Driver.Session.language = Nothing
, GHC.Driver.Session.ldInputs = []
, GHC.Driver.Session.liberateCaseThreshold = Nothing
, GHC.Driver.Session.libraryPaths = []
, GHC.Driver.Session.liftLamsKnown = False
, GHC.Driver.Session.liftLamsNonRecArgs = Nothing
, GHC.Driver.Session.liftLamsRecArgs = Nothing
, GHC.Driver.Session.llvmConfig = initialLlvmConfig
, GHC.Driver.Session.log_action = \_ _ _ _ _ -> pure ()
, GHC.Driver.Session.mainFunIs = Nothing
, GHC.Driver.Session.mainModIs = GHC.Unit.Types.mkModule
(GHC.Unit.Types.stringToUnit "")
(GHC.Unit.Module.Name.mkModuleName "")
, GHC.Driver.Session.maxErrors = Nothing
, GHC.Driver.Session.maxInlineAllocSize = 0
, GHC.Driver.Session.maxInlineMemcpyInsns = 0
, GHC.Driver.Session.maxInlineMemsetInsns = 0
, GHC.Driver.Session.maxPmCheckModels = 0
, GHC.Driver.Session.maxRefHoleFits = Nothing
, GHC.Driver.Session.maxRelevantBinds = Nothing
, GHC.Driver.Session.maxSimplIterations = 0
, GHC.Driver.Session.maxUncoveredPatterns = 0
, GHC.Driver.Session.maxValidHoleFits = Nothing
, GHC.Driver.Session.maxWorkerArgs = 0
, GHC.Driver.Session.newDerivOnLoc = initialSrcSpan
, GHC.Driver.Session.nextTempSuffix = error "nextTempSuffix"
, GHC.Driver.Session.nextWrapperNum = error "nextWrapperNum"
, GHC.Driver.Session.objectDir = Nothing
, GHC.Driver.Session.objectSuf = ""
, GHC.Driver.Session.optLevel = 0
, GHC.Driver.Session.outputFile = Nothing
, GHC.Driver.Session.outputHi = Nothing
, GHC.Driver.Session.overlapInstLoc = initialSrcSpan
, GHC.Driver.Session.packageDBFlags = []
, GHC.Driver.Session.packageEnv = Nothing
, GHC.Driver.Session.packageFlags = []
, GHC.Driver.Session.parMakeCount = Nothing
, GHC.Driver.Session.pkgTrustOnLoc = initialSrcSpan
, GHC.Driver.Session.platformConstants = initialPlatformConstants
, GHC.Driver.Session.platformMisc = initialPlatformMisc
, GHC.Driver.Session.pluginModNameOpts = []
, GHC.Driver.Session.pluginModNames = []
, GHC.Driver.Session.pluginPackageFlags = []
, GHC.Driver.Session.pprCols = 80
, GHC.Driver.Session.pprUserLength = 0
, GHC.Driver.Session.profAuto = GHC.Driver.Session.NoProfAuto
, GHC.Driver.Session.rawSettings = []
, GHC.Driver.Session.reductionDepth = GHC.Types.Basic.mkIntWithInf 0
, GHC.Driver.Session.refLevelHoleFits = Nothing
, GHC.Driver.Session.reverseErrors = False
, GHC.Driver.Session.rtccInfo = error "rtccInfo"
, GHC.Driver.Session.rtldInfo = error "rtldInfo"
, GHC.Driver.Session.rtsOpts = Nothing
, GHC.Driver.Session.rtsOptsEnabled = GHC.Driver.Session.RtsOptsNone
, GHC.Driver.Session.rtsOptsSuggestions = False
, GHC.Driver.Session.ruleCheck = Nothing
, GHC.Driver.Session.safeHaskell = GHC.Driver.Session.Sf_Ignore
, GHC.Driver.Session.safeInfer = False
, GHC.Driver.Session.safeInferred = False
, GHC.Driver.Session.simplPhases = 0
, GHC.Driver.Session.simplTickFactor = 0
, GHC.Driver.Session.solverIterations = GHC.Types.Basic.mkIntWithInf 0
, GHC.Driver.Session.specConstrCount = Nothing
, GHC.Driver.Session.specConstrRecursive = 0
, GHC.Driver.Session.specConstrThreshold = Nothing
, GHC.Driver.Session.splitInfo = Nothing
, GHC.Driver.Session.sseVersion = Nothing
, GHC.Driver.Session.staticPlugins = []
, GHC.Driver.Session.strictnessBefore = []
, GHC.Driver.Session.stubDir = Nothing
, GHC.Driver.Session.targetPlatform = initialTargetPlatform
, GHC.Driver.Session.thOnLoc = initialSrcSpan
, GHC.Driver.Session.toolSettings = initialToolSettings
, GHC.Driver.Session.trace_action = \_ _ _ a -> a
, GHC.Driver.Session.trustFlags = []
, GHC.Driver.Session.trustworthyOnLoc = initialSrcSpan
, GHC.Driver.Session.ufCreationThreshold = 0
, GHC.Driver.Session.ufDearOp = 0
, GHC.Driver.Session.ufDictDiscount = 0
, GHC.Driver.Session.ufFunAppDiscount = 0
, GHC.Driver.Session.ufUseThreshold = 0
, GHC.Driver.Session.ufVeryAggressive = False
, GHC.Driver.Session.uniqueIncrement = 0
, GHC.Driver.Session.unitDatabases = Nothing
, GHC.Driver.Session.unitState = GHC.Unit.State.emptyUnitState
, GHC.Driver.Session.useColor = GHC.Utils.Misc.Never
, GHC.Driver.Session.useUnicode = False
, GHC.Driver.Session.verbosity = 0
, GHC.Driver.Session.warningFlags = GHC.Data.EnumSet.fromList []
, GHC.Driver.Session.warnSafeOnLoc = initialSrcSpan
, GHC.Driver.Session.warnUnsafeOnLoc = initialSrcSpan
, GHC.Driver.Session.ways = Set.empty
} }
initialFileSettings :: GHC.Driver.Session.FileSettings initialFileSettings :: GHC.Driver.Session.FileSettings
@ -273,10 +99,17 @@ initialGhcNameVersion = GHC.Driver.Session.GhcNameVersion
, GHC.Driver.Session.ghcNameVersion_projectVersion = "" , GHC.Driver.Session.ghcNameVersion_projectVersion = ""
} }
initialIncludeSpecs :: GHC.Driver.Session.IncludeSpecs initialPlatformMisc :: GHC.Driver.Session.PlatformMisc
initialIncludeSpecs = GHC.Driver.Session.IncludeSpecs initialPlatformMisc = GHC.Driver.Session.PlatformMisc
{ GHC.Driver.Session.includePathsGlobal = [] { GHC.Driver.Session.platformMisc_ghcDebugged = False
, GHC.Driver.Session.includePathsQuote = [] , GHC.Driver.Session.platformMisc_ghcRTSWays = ""
, GHC.Driver.Session.platformMisc_ghcRtsWithLibdw = False
, GHC.Driver.Session.platformMisc_ghcThreaded = False
, GHC.Driver.Session.platformMisc_ghcWithInterpreter = False
, GHC.Driver.Session.platformMisc_ghcWithSMP = False
, GHC.Driver.Session.platformMisc_libFFI = False
, GHC.Driver.Session.platformMisc_llvmTarget = ""
, GHC.Driver.Session.platformMisc_targetPlatformString = ""
} }
initialLlvmConfig :: GHC.Driver.Session.LlvmConfig initialLlvmConfig :: GHC.Driver.Session.LlvmConfig
@ -424,23 +257,6 @@ initialPlatformMini = GHC.Settings.PlatformMini
, GHC.Settings.platformMini_os = GHC.Platform.OSLinux , GHC.Settings.platformMini_os = GHC.Platform.OSLinux
} }
initialPlatformMisc :: GHC.Driver.Session.PlatformMisc
initialPlatformMisc = GHC.Driver.Session.PlatformMisc
{ GHC.Driver.Session.platformMisc_ghcDebugged = False
, GHC.Driver.Session.platformMisc_ghcRTSWays = ""
, GHC.Driver.Session.platformMisc_ghcRtsWithLibdw = False
, GHC.Driver.Session.platformMisc_ghcThreaded = False
, GHC.Driver.Session.platformMisc_ghcWithInterpreter = False
, GHC.Driver.Session.platformMisc_ghcWithSMP = False
, GHC.Driver.Session.platformMisc_libFFI = False
, GHC.Driver.Session.platformMisc_llvmTarget = ""
, GHC.Driver.Session.platformMisc_targetPlatformString = ""
}
initialSrcSpan :: GHC.Types.SrcLoc.SrcSpan
initialSrcSpan =
GHC.Types.SrcLoc.UnhelpfulSpan GHC.Types.SrcLoc.UnhelpfulNoLocationInfo
initialTargetPlatform :: GHC.Settings.Platform initialTargetPlatform :: GHC.Settings.Platform
initialTargetPlatform = GHC.Settings.Platform initialTargetPlatform = GHC.Settings.Platform
{ GHC.Settings.platformByteOrder = GHC.ByteOrder.LittleEndian { GHC.Settings.platformByteOrder = GHC.ByteOrder.LittleEndian