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
parent
ad88ba3f57
commit
3996efd5eb
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue