From 3996efd5eb27ae7a3e3eb9ff1bde66cfda28aff9 Mon Sep 17 00:00:00 2001 From: Sergey Vinokurov Date: Thu, 6 Jan 2022 23:57:07 +0000 Subject: [PATCH] =?UTF-8?q?Use=20defaultDynFlags=20to=20obtain=20ghc?= =?UTF-8?q?=E2=80=99s=20DynFlags?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This way brittany can avoid dealing with incompatibilities in DynFlags structure between ghc versions (e.g. different versions having different fields). --- .../Haskell/Brittany/Internal/ParseModule.hs | 230 ++---------------- 1 file changed, 23 insertions(+), 207 deletions(-) diff --git a/source/library/Language/Haskell/Brittany/Internal/ParseModule.hs b/source/library/Language/Haskell/Brittany/Internal/ParseModule.hs index 2cc259f..8ab3630 100644 --- a/source/library/Language/Haskell/Brittany/Internal/ParseModule.hs +++ b/source/library/Language/Haskell/Brittany/Internal/ParseModule.hs @@ -1,29 +1,21 @@ {-# 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.IO.Class as IO import qualified Control.Monad.Trans.Except as Except -import qualified Data.Set as Set import qualified GHC import qualified GHC.ByteOrder import qualified GHC.Data.Bag -import qualified GHC.Data.EnumSet import qualified GHC.Data.StringBuffer import qualified GHC.Driver.Session import qualified GHC.Parser.Header import qualified GHC.Platform import qualified GHC.Settings -import qualified GHC.Types.Basic 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.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.Types as ExactPrint @@ -77,184 +69,18 @@ handleErrorMessages handleErrorMessages = 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 - { GHC.Driver.Session.avx = False - , GHC.Driver.Session.avx2 = False - , GHC.Driver.Session.avx512cd = False - , GHC.Driver.Session.avx512er = False - , GHC.Driver.Session.avx512f = False - , GHC.Driver.Session.avx512pf = False - , GHC.Driver.Session.binBlobThreshold = 0 - , GHC.Driver.Session.bmiVersion = Nothing - , GHC.Driver.Session.cachedPlugins = [] - , GHC.Driver.Session.canGenerateDynamicToo = error "canGenerateDynamicToo" - , 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 +initialDynFlags = GHC.Driver.Session.defaultDynFlags initialSettings initialLlvmConfig + +initialSettings :: GHC.Driver.Session.Settings +initialSettings = GHC.Driver.Session.Settings + { GHC.Driver.Session.sGhcNameVersion = initialGhcNameVersion + , GHC.Driver.Session.sFileSettings = initialFileSettings + , GHC.Driver.Session.sTargetPlatform = initialTargetPlatform + , GHC.Driver.Session.sToolSettings = initialToolSettings + , GHC.Driver.Session.sPlatformMisc = initialPlatformMisc + , GHC.Driver.Session.sPlatformConstants = initialPlatformConstants + , GHC.Driver.Session.sRawSettings = [] } initialFileSettings :: GHC.Driver.Session.FileSettings @@ -273,10 +99,17 @@ initialGhcNameVersion = GHC.Driver.Session.GhcNameVersion , GHC.Driver.Session.ghcNameVersion_projectVersion = "" } -initialIncludeSpecs :: GHC.Driver.Session.IncludeSpecs -initialIncludeSpecs = GHC.Driver.Session.IncludeSpecs - { GHC.Driver.Session.includePathsGlobal = [] - , GHC.Driver.Session.includePathsQuote = [] +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 = "" } initialLlvmConfig :: GHC.Driver.Session.LlvmConfig @@ -424,23 +257,6 @@ initialPlatformMini = GHC.Settings.PlatformMini , 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 { GHC.Settings.platformByteOrder = GHC.ByteOrder.LittleEndian