scrod-0.2026.2.21: source/library/Scrod/Ghc/DynFlags.hs
{-# LANGUAGE TemplateHaskellQuotes #-}
-- | A minimal 'DynFlags.DynFlags' stub sufficient for parsing.
--
-- GHC's parser requires a 'DynFlags' value, but most fields are irrelevant
-- for parsing alone. This module constructs one where only the fields
-- actually accessed during parsing (e.g., 'DynFlags.extensions',
-- 'DynFlags.language') have real values; everything else throws
-- 'Uninitialized.Uninitialized' if accessed, which makes it obvious when
-- a new GHC version starts touching an unexpected field.
module Scrod.Ghc.DynFlags where
import qualified Data.Set as Set
import qualified GHC.Core.Unfold as Unfold
import qualified GHC.Data.EnumSet as EnumSet
import qualified GHC.Driver.Backend as Backend
import qualified GHC.Driver.DynFlags as DynFlags
import qualified GHC.Stack as Stack
import qualified GHC.Types.SafeHaskell as SafeHaskell
import qualified Scrod.Ghc.FileSettings as FileSettings
import qualified Scrod.Ghc.GhcNameVersion as GhcNameVersion
import qualified Scrod.Ghc.Platform as Platform
import qualified Scrod.Ghc.PlatformMisc as PlatformMisc
import qualified Scrod.Ghc.ToolSettings as ToolSettings
import qualified Scrod.Ghc.Uninitialized as Uninitialized
import qualified Scrod.Ghc.UnitSettings as UnitSettings
empty :: (Stack.HasCallStack) => DynFlags.DynFlags
empty =
DynFlags.DynFlags
{ DynFlags.avx = Uninitialized.throw 'DynFlags.avx,
DynFlags.avx2 = Uninitialized.throw 'DynFlags.avx2,
DynFlags.avx512cd = Uninitialized.throw 'DynFlags.avx512cd,
DynFlags.avx512er = Uninitialized.throw 'DynFlags.avx512er,
DynFlags.avx512f = Uninitialized.throw 'DynFlags.avx512f,
DynFlags.avx512pf = Uninitialized.throw 'DynFlags.avx512pf,
DynFlags.backend = Backend.noBackend,
DynFlags.binBlobThreshold = Uninitialized.throw 'DynFlags.binBlobThreshold,
DynFlags.bmiVersion = Uninitialized.throw 'DynFlags.bmiVersion,
DynFlags.callerCcFilters = Uninitialized.throw 'DynFlags.callerCcFilters,
DynFlags.canUseColor = Uninitialized.throw 'DynFlags.canUseColor,
DynFlags.canUseErrorLinks = Uninitialized.throw 'DynFlags.canUseErrorLinks,
DynFlags.cfgWeights = Uninitialized.throw 'DynFlags.cfgWeights,
DynFlags.cmdlineFrameworks = Uninitialized.throw 'DynFlags.cmdlineFrameworks,
DynFlags.cmmProcAlignment = Uninitialized.throw 'DynFlags.cmmProcAlignment,
DynFlags.colScheme = Uninitialized.throw 'DynFlags.colScheme,
DynFlags.customWarningCategories = Uninitialized.throw 'DynFlags.customWarningCategories,
DynFlags.debugLevel = Uninitialized.throw 'DynFlags.debugLevel,
DynFlags.depExcludeMods = Uninitialized.throw 'DynFlags.depExcludeMods,
DynFlags.depIncludeCppDeps = Uninitialized.throw 'DynFlags.depIncludeCppDeps,
DynFlags.depIncludePkgDeps = Uninitialized.throw 'DynFlags.depIncludePkgDeps,
DynFlags.depMakefile = Uninitialized.throw 'DynFlags.depMakefile,
DynFlags.depSuffixes = Uninitialized.throw 'DynFlags.depSuffixes,
DynFlags.deriveViaOnLoc = Uninitialized.throw 'DynFlags.deriveViaOnLoc,
DynFlags.dmdUnboxWidth = 0,
DynFlags.dumpDir = Uninitialized.throw 'DynFlags.dumpDir,
DynFlags.dumpFlags = Uninitialized.throw 'DynFlags.dumpFlags,
DynFlags.dumpPrefix = Uninitialized.throw 'DynFlags.dumpPrefix,
DynFlags.dumpPrefixForce = Uninitialized.throw 'DynFlags.dumpPrefixForce,
DynFlags.dylibInstallName = Uninitialized.throw 'DynFlags.dylibInstallName,
DynFlags.dynamicNow = False,
DynFlags.dynHiSuf_ = Uninitialized.throw 'DynFlags.dynHiSuf_,
DynFlags.dynLibLoader = Uninitialized.throw 'DynFlags.dynLibLoader,
DynFlags.dynObjectSuf_ = Uninitialized.throw 'DynFlags.dynObjectSuf_,
DynFlags.dynOutputFile_ = Uninitialized.throw 'DynFlags.dynOutputFile_,
DynFlags.dynOutputHi = Uninitialized.throw 'DynFlags.dynOutputHi,
DynFlags.enableTimeStats = False,
DynFlags.extensionFlags = EnumSet.empty,
DynFlags.extensions = [],
DynFlags.externalPluginSpecs = Uninitialized.throw 'DynFlags.externalPluginSpecs,
DynFlags.fatalCustomWarningCategories = Uninitialized.throw 'DynFlags.fatalCustomWarningCategories,
DynFlags.fatalWarningFlags = Uninitialized.throw 'DynFlags.fatalWarningFlags,
DynFlags.fileSettings = FileSettings.empty,
DynFlags.floatLamArgs = Uninitialized.throw 'DynFlags.floatLamArgs,
DynFlags.flushOut = Uninitialized.throw 'DynFlags.flushOut,
DynFlags.fma = Uninitialized.throw 'DynFlags.fma,
DynFlags.frameworkPaths = Uninitialized.throw 'DynFlags.frameworkPaths,
DynFlags.frontendPluginOpts = Uninitialized.throw 'DynFlags.frontendPluginOpts,
DynFlags.generalFlags = EnumSet.empty,
DynFlags.ghcHeapSize = Nothing,
DynFlags.ghciBrowserHost = "",
DynFlags.ghciBrowserPlaywrightBrowserType = Nothing,
DynFlags.ghciBrowserPlaywrightLaunchOpts = Nothing,
DynFlags.ghciBrowserPort = 0,
DynFlags.ghciBrowserPuppeteerLaunchOpts = Nothing,
DynFlags.ghciHistSize = Uninitialized.throw 'DynFlags.ghciHistSize,
DynFlags.ghciScripts = Uninitialized.throw 'DynFlags.ghciScripts,
DynFlags.ghcLink = DynFlags.NoLink,
DynFlags.ghcMode = Uninitialized.throw 'DynFlags.ghcMode,
DynFlags.ghcNameVersion = GhcNameVersion.empty,
DynFlags.ghcVersionFile = Uninitialized.throw 'DynFlags.ghcVersionFile,
DynFlags.givensFuel = Uninitialized.throw 'DynFlags.givensFuel,
DynFlags.haddockOptions = Uninitialized.throw 'DynFlags.haddockOptions,
DynFlags.hcSuf = Uninitialized.throw 'DynFlags.hcSuf,
DynFlags.hiddenModules = mempty,
DynFlags.hiDir = Uninitialized.throw 'DynFlags.hiDir,
DynFlags.hieDir = Uninitialized.throw 'DynFlags.hieDir,
DynFlags.hieSuf = Uninitialized.throw 'DynFlags.hieSuf,
DynFlags.historySize = Uninitialized.throw 'DynFlags.historySize,
DynFlags.hiSuf_ = Uninitialized.throw 'DynFlags.hiSuf_,
DynFlags.homeUnitId_ = Uninitialized.throw 'DynFlags.homeUnitId_,
DynFlags.homeUnitInstanceOf_ = Uninitialized.throw 'DynFlags.homeUnitInstanceOf_,
DynFlags.homeUnitInstantiations_ = Uninitialized.throw 'DynFlags.homeUnitInstantiations_,
DynFlags.hpcDir = Uninitialized.throw 'DynFlags.hpcDir,
DynFlags.ifCompression = Uninitialized.throw 'DynFlags.ifCompression,
DynFlags.ignorePackageFlags = Uninitialized.throw 'DynFlags.ignorePackageFlags,
DynFlags.importPaths = Uninitialized.throw 'DynFlags.importPaths,
DynFlags.includePaths = Uninitialized.throw 'DynFlags.includePaths,
DynFlags.incoherentOnLoc = Uninitialized.throw 'DynFlags.incoherentOnLoc,
DynFlags.initialUnique = Uninitialized.throw 'DynFlags.initialUnique,
DynFlags.interactivePrint = Uninitialized.throw 'DynFlags.interactivePrint,
DynFlags.language = Nothing,
DynFlags.ldInputs = Uninitialized.throw 'DynFlags.ldInputs,
DynFlags.liberateCaseThreshold = Uninitialized.throw 'DynFlags.liberateCaseThreshold,
DynFlags.libraryPaths = Uninitialized.throw 'DynFlags.libraryPaths,
DynFlags.liftLamsKnown = Uninitialized.throw 'DynFlags.liftLamsKnown,
DynFlags.liftLamsNonRecArgs = Uninitialized.throw 'DynFlags.liftLamsNonRecArgs,
DynFlags.liftLamsRecArgs = Uninitialized.throw 'DynFlags.liftLamsRecArgs,
DynFlags.llvmOptLevel = 0,
DynFlags.mainFunIs = Uninitialized.throw 'DynFlags.mainFunIs,
DynFlags.mainModuleNameIs = Uninitialized.throw 'DynFlags.mainModuleNameIs,
DynFlags.maxErrors = Uninitialized.throw 'DynFlags.maxErrors,
DynFlags.maxForcedSpecArgs = Uninitialized.throw 'DynFlags.maxForcedSpecArgs,
DynFlags.maxInlineAllocSize = Uninitialized.throw 'DynFlags.maxInlineAllocSize,
DynFlags.maxInlineMemcpyInsns = Uninitialized.throw 'DynFlags.maxInlineMemcpyInsns,
DynFlags.maxInlineMemsetInsns = Uninitialized.throw 'DynFlags.maxInlineMemsetInsns,
DynFlags.maxPmCheckModels = Uninitialized.throw 'DynFlags.maxPmCheckModels,
DynFlags.maxRefHoleFits = Uninitialized.throw 'DynFlags.maxRefHoleFits,
DynFlags.maxRelevantBinds = Uninitialized.throw 'DynFlags.maxRelevantBinds,
DynFlags.maxSimplIterations = Uninitialized.throw 'DynFlags.maxSimplIterations,
DynFlags.maxUncoveredPatterns = Uninitialized.throw 'DynFlags.maxUncoveredPatterns,
DynFlags.maxValidHoleFits = Uninitialized.throw 'DynFlags.maxValidHoleFits,
DynFlags.maxWorkerArgs = Uninitialized.throw 'DynFlags.maxWorkerArgs,
DynFlags.newDerivOnLoc = Uninitialized.throw 'DynFlags.newDerivOnLoc,
DynFlags.objectDir = Uninitialized.throw 'DynFlags.objectDir,
DynFlags.objectSuf_ = Uninitialized.throw 'DynFlags.objectSuf_,
DynFlags.outputFile_ = Uninitialized.throw 'DynFlags.outputFile_,
DynFlags.outputHi = Uninitialized.throw 'DynFlags.outputHi,
DynFlags.overlapInstLoc = Uninitialized.throw 'DynFlags.overlapInstLoc,
DynFlags.packageDBFlags = Uninitialized.throw 'DynFlags.packageDBFlags,
DynFlags.packageEnv = Uninitialized.throw 'DynFlags.packageEnv,
DynFlags.packageFlags = Uninitialized.throw 'DynFlags.packageFlags,
DynFlags.parMakeCount = Uninitialized.throw 'DynFlags.parMakeCount,
DynFlags.pkgTrustOnLoc = Uninitialized.throw 'DynFlags.pkgTrustOnLoc,
DynFlags.platformMisc = PlatformMisc.empty,
DynFlags.pluginModNameOpts = Uninitialized.throw 'DynFlags.pluginModNameOpts,
DynFlags.pluginModNames = Uninitialized.throw 'DynFlags.pluginModNames,
DynFlags.pluginPackageFlags = Uninitialized.throw 'DynFlags.pluginPackageFlags,
DynFlags.pprCols = Uninitialized.throw 'DynFlags.pprCols,
DynFlags.pprUserLength = Uninitialized.throw 'DynFlags.pprUserLength,
DynFlags.profAuto = Uninitialized.throw 'DynFlags.profAuto,
DynFlags.qcsFuel = Uninitialized.throw 'DynFlags.qcsFuel,
DynFlags.rawSettings = Uninitialized.throw 'DynFlags.rawSettings,
DynFlags.reductionDepth = Uninitialized.throw 'DynFlags.reductionDepth,
DynFlags.reexportedModules = [],
DynFlags.refLevelHoleFits = Uninitialized.throw 'DynFlags.refLevelHoleFits,
DynFlags.reverseErrors = Uninitialized.throw 'DynFlags.reverseErrors,
DynFlags.rtsOpts = Uninitialized.throw 'DynFlags.rtsOpts,
DynFlags.rtsOptsEnabled = Uninitialized.throw 'DynFlags.rtsOptsEnabled,
DynFlags.rtsOptsSuggestions = Uninitialized.throw 'DynFlags.rtsOptsSuggestions,
DynFlags.ruleCheck = Uninitialized.throw 'DynFlags.ruleCheck,
DynFlags.safeHaskell = SafeHaskell.Sf_Ignore,
DynFlags.safeInfer = False,
DynFlags.safeInferred = Uninitialized.throw 'DynFlags.safeInferred,
DynFlags.simplPhases = Uninitialized.throw 'DynFlags.simplPhases,
DynFlags.simplTickFactor = Uninitialized.throw 'DynFlags.simplTickFactor,
DynFlags.solverIterations = Uninitialized.throw 'DynFlags.solverIterations,
DynFlags.specConstrCount = Uninitialized.throw 'DynFlags.specConstrCount,
DynFlags.specConstrRecursive = Uninitialized.throw 'DynFlags.specConstrRecursive,
DynFlags.specConstrThreshold = Uninitialized.throw 'DynFlags.specConstrThreshold,
DynFlags.splitInfo = Uninitialized.throw 'DynFlags.splitInfo,
DynFlags.sseVersion = Uninitialized.throw 'DynFlags.sseVersion,
DynFlags.strictnessBefore = Uninitialized.throw 'DynFlags.strictnessBefore,
DynFlags.stubDir = Uninitialized.throw 'DynFlags.stubDir,
DynFlags.targetPlatform = Platform.empty,
DynFlags.targetWays_ = Set.empty,
DynFlags.thisPackageName = Uninitialized.throw 'DynFlags.thisPackageName,
DynFlags.thOnLoc = Uninitialized.throw 'DynFlags.thOnLoc,
DynFlags.tmpDir = Uninitialized.throw 'DynFlags.tmpDir,
DynFlags.toolSettings = ToolSettings.empty,
DynFlags.trustFlags = Uninitialized.throw 'DynFlags.trustFlags,
DynFlags.trustworthyOnLoc = Uninitialized.throw 'DynFlags.trustworthyOnLoc,
DynFlags.unfoldingOpts = Unfold.defaultUnfoldingOpts,
DynFlags.uniqueIncrement = Uninitialized.throw 'DynFlags.uniqueIncrement,
DynFlags.unitSettings = UnitSettings.empty,
DynFlags.useColor = Uninitialized.throw 'DynFlags.useColor,
DynFlags.useErrorLinks = Uninitialized.throw 'DynFlags.useErrorLinks,
DynFlags.useUnicode = Uninitialized.throw 'DynFlags.useUnicode,
DynFlags.verbosity = Uninitialized.throw 'DynFlags.verbosity,
DynFlags.wantedsFuel = Uninitialized.throw 'DynFlags.wantedsFuel,
DynFlags.warningFlags = Uninitialized.throw 'DynFlags.warningFlags,
DynFlags.warnSafeOnLoc = Uninitialized.throw 'DynFlags.warnSafeOnLoc,
DynFlags.warnUnsafeOnLoc = Uninitialized.throw 'DynFlags.warnUnsafeOnLoc,
DynFlags.workingDirectory = Uninitialized.throw 'DynFlags.workingDirectory
}