From c01ca5064a7c3f39d8bf933d608884b8c34ece83 Mon Sep 17 00:00:00 2001 From: Rachel Date: Wed, 20 Aug 2025 10:53:03 -0400 Subject: [PATCH 1/3] Add NFData instances for HLS plugin support --- Cabal-syntax/src/Distribution/Compiler.hs | 1 + Cabal/src/Distribution/Simple/Compiler.hs | 5 +++++ Cabal/src/Distribution/Simple/InstallDirs.hs | 2 ++ .../Simple/InstallDirs/Internal.hs | 2 ++ .../src/Distribution/Simple/Setup/Haddock.hs | 1 + Cabal/src/Distribution/Types/ParStrat.hs | 5 +++++ Cabal/src/Distribution/Utils/NubList.hs | 3 +++ Cabal/src/Distribution/Verbosity.hs | 3 ++- Cabal/src/Distribution/Verbosity/Internal.hs | 2 ++ .../Solver/Types/ConstraintSource.hs | 1 + .../Solver/Types/OptionalStanza.hs | 1 + .../Solver/Types/PackageConstraint.hs | 1 + .../Solver/Types/ProjectConfigPath.hs | 1 + .../src/Distribution/Solver/Types/Settings.hs | 12 +++++++++++ .../Distribution/Client/BuildReports/Types.hs | 1 + .../Client/CmdInstall/ClientInstallFlags.hs | 1 + .../Distribution/Client/Dependency/Types.hs | 2 ++ .../Client/ProjectConfig/Types.hs | 21 +++++++++++++++++++ .../src/Distribution/Client/Targets.hs | 3 +++ .../Distribution/Client/Types/AllowNewer.hs | 8 +++++++ .../Client/Types/InstallMethod.hs | 1 + .../Client/Types/OverwritePolicy.hs | 1 + .../src/Distribution/Client/Types/Repo.hs | 3 +++ .../Distribution/Client/Types/SourceRepo.hs | 2 ++ .../Types/WriteGhcEnvironmentFilesPolicy.hs | 1 + changelog.d/pr-11097 | 7 +++++++ 26 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 changelog.d/pr-11097 diff --git a/Cabal-syntax/src/Distribution/Compiler.hs b/Cabal-syntax/src/Distribution/Compiler.hs index 5e0f9e84d77..e12d4569d2f 100644 --- a/Cabal-syntax/src/Distribution/Compiler.hs +++ b/Cabal-syntax/src/Distribution/Compiler.hs @@ -224,6 +224,7 @@ data AbiTag deriving (Eq, Generic, Show, Read) instance Binary AbiTag +instance NFData AbiTag instance Structured AbiTag instance Pretty AbiTag where diff --git a/Cabal/src/Distribution/Simple/Compiler.hs b/Cabal/src/Distribution/Simple/Compiler.hs index 543ff1e0083..4e31bb43430 100644 --- a/Cabal/src/Distribution/Simple/Compiler.hs +++ b/Cabal/src/Distribution/Simple/Compiler.hs @@ -130,6 +130,7 @@ data Compiler = Compiler deriving (Eq, Generic, Show, Read) instance Binary Compiler +instance NFData Compiler instance Structured Compiler showCompilerId :: Compiler -> String @@ -205,6 +206,7 @@ data PackageDBX fp deriving (Eq, Generic, Ord, Show, Read, Functor, Foldable, Traversable) instance Binary fp => Binary (PackageDBX fp) +instance NFData fp => NFData (PackageDBX fp) instance Structured fp => Structured (PackageDBX fp) -- | Parse a PackageDB stack entry @@ -305,6 +307,7 @@ data OptimisationLevel deriving (Bounded, Enum, Eq, Generic, Read, Show) instance Binary OptimisationLevel +instance NFData OptimisationLevel instance Structured OptimisationLevel instance Parsec OptimisationLevel where @@ -354,6 +357,7 @@ data DebugInfoLevel deriving (Bounded, Enum, Eq, Generic, Read, Show) instance Binary DebugInfoLevel +instance NFData DebugInfoLevel instance Structured DebugInfoLevel instance Parsec DebugInfoLevel where @@ -607,6 +611,7 @@ data ProfDetailLevel deriving (Eq, Generic, Read, Show) instance Binary ProfDetailLevel +instance NFData ProfDetailLevel instance Structured ProfDetailLevel instance Parsec ProfDetailLevel where diff --git a/Cabal/src/Distribution/Simple/InstallDirs.hs b/Cabal/src/Distribution/Simple/InstallDirs.hs index 818b9273bfd..501d4f717a1 100644 --- a/Cabal/src/Distribution/Simple/InstallDirs.hs +++ b/Cabal/src/Distribution/Simple/InstallDirs.hs @@ -109,6 +109,7 @@ data InstallDirs dir = InstallDirs deriving (Eq, Read, Show, Functor, Generic) instance Binary dir => Binary (InstallDirs dir) +instance NFData dir => NFData (InstallDirs dir) instance Structured dir => Structured (InstallDirs dir) instance (Semigroup dir, Monoid dir) => Monoid (InstallDirs dir) where @@ -397,6 +398,7 @@ newtype PathTemplate = PathTemplate [PathComponent] deriving (Eq, Ord, Generic) instance Binary PathTemplate +instance NFData PathTemplate instance Structured PathTemplate type PathTemplateEnv = [(PathTemplateVariable, PathTemplate)] diff --git a/Cabal/src/Distribution/Simple/InstallDirs/Internal.hs b/Cabal/src/Distribution/Simple/InstallDirs/Internal.hs index a65c706af20..e7cb0acad3f 100644 --- a/Cabal/src/Distribution/Simple/InstallDirs/Internal.hs +++ b/Cabal/src/Distribution/Simple/InstallDirs/Internal.hs @@ -14,6 +14,7 @@ data PathComponent deriving (Eq, Ord, Generic) instance Binary PathComponent +instance NFData PathComponent instance Structured PathComponent data PathTemplateVariable @@ -67,6 +68,7 @@ data PathTemplateVariable deriving (Eq, Ord, Generic) instance Binary PathTemplateVariable +instance NFData PathTemplateVariable instance Structured PathTemplateVariable instance Show PathTemplateVariable where diff --git a/Cabal/src/Distribution/Simple/Setup/Haddock.hs b/Cabal/src/Distribution/Simple/Setup/Haddock.hs index 4e0ed58e1da..e0fd90421d5 100644 --- a/Cabal/src/Distribution/Simple/Setup/Haddock.hs +++ b/Cabal/src/Distribution/Simple/Setup/Haddock.hs @@ -75,6 +75,7 @@ import qualified Text.PrettyPrint as Disp data HaddockTarget = ForHackage | ForDevelopment deriving (Eq, Show, Generic) instance Binary HaddockTarget +instance NFData HaddockTarget instance Structured HaddockTarget instance Pretty HaddockTarget where diff --git a/Cabal/src/Distribution/Types/ParStrat.hs b/Cabal/src/Distribution/Types/ParStrat.hs index 59d8beb3889..25c4a4df30a 100644 --- a/Cabal/src/Distribution/Types/ParStrat.hs +++ b/Cabal/src/Distribution/Types/ParStrat.hs @@ -10,6 +10,11 @@ data ParStratX sem Serial deriving (Show) +instance NFData sem => NFData (ParStratX sem) where + rnf (NumJobs m) = rnf m + rnf (UseSem s) = rnf s + rnf Serial = () + -- | Used by Cabal to indicate that we want to use this specific semaphore (created by cabal-install) type ParStrat = ParStratX String diff --git a/Cabal/src/Distribution/Utils/NubList.hs b/Cabal/src/Distribution/Utils/NubList.hs index 09da19aa5ae..233c53ccb25 100644 --- a/Cabal/src/Distribution/Utils/NubList.hs +++ b/Cabal/src/Distribution/Utils/NubList.hs @@ -75,6 +75,9 @@ instance (Ord a, Binary a) => Binary (NubList a) where instance Structured a => Structured (NubList a) +instance (Ord a, NFData a) => NFData (NubList a) where + rnf (NubList xs) = rnf xs + -- | NubListR : A right-biased version of 'NubList'. That is @toNubListR -- ["-XNoFoo", "-XFoo", "-XNoFoo"]@ will result in @["-XFoo", "-XNoFoo"]@, -- unlike the normal 'NubList', which is left-biased. Built on top of diff --git a/Cabal/src/Distribution/Verbosity.hs b/Cabal/src/Distribution/Verbosity.hs index c81c6dd8630..1499760ccfe 100644 --- a/Cabal/src/Distribution/Verbosity.hs +++ b/Cabal/src/Distribution/Verbosity.hs @@ -111,7 +111,8 @@ instance Bounded Verbosity where maxBound = mkVerbosity maxBound instance Binary Verbosity -instance Structured Verbosity +instance NFData Verbosity +instance Structured Verbosity -- | In 'silent' mode, we should not print /anything/ unless an error occurs. silent :: Verbosity diff --git a/Cabal/src/Distribution/Verbosity/Internal.hs b/Cabal/src/Distribution/Verbosity/Internal.hs index 9d851f59f07..9d218567b56 100644 --- a/Cabal/src/Distribution/Verbosity/Internal.hs +++ b/Cabal/src/Distribution/Verbosity/Internal.hs @@ -12,6 +12,7 @@ data VerbosityLevel = Silent | Normal | Verbose | Deafening deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded) instance Binary VerbosityLevel +instance NFData VerbosityLevel instance Structured VerbosityLevel data VerbosityFlag @@ -26,4 +27,5 @@ data VerbosityFlag deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded) instance Binary VerbosityFlag +instance NFData VerbosityFlag instance Structured VerbosityFlag diff --git a/cabal-install-solver/src/Distribution/Solver/Types/ConstraintSource.hs b/cabal-install-solver/src/Distribution/Solver/Types/ConstraintSource.hs index 0deb786959b..4244a080064 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/ConstraintSource.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/ConstraintSource.hs @@ -63,6 +63,7 @@ data ConstraintSource = deriving (Show, Eq, Generic) instance Binary ConstraintSource +instance NFData ConstraintSource instance Structured ConstraintSource -- | Description of a 'ConstraintSource'. diff --git a/cabal-install-solver/src/Distribution/Solver/Types/OptionalStanza.hs b/cabal-install-solver/src/Distribution/Solver/Types/OptionalStanza.hs index 457cd6c9b13..6b75472d9f5 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/OptionalStanza.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/OptionalStanza.hs @@ -57,6 +57,7 @@ enableStanzas optionalStanzas = ComponentRequestedSpec } instance Binary OptionalStanza +instance NFData OptionalStanza instance Structured OptionalStanza ------------------------------------------------------------------------------- diff --git a/cabal-install-solver/src/Distribution/Solver/Types/PackageConstraint.hs b/cabal-install-solver/src/Distribution/Solver/Types/PackageConstraint.hs index 06c5ae169fa..9b1c3145f50 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/PackageConstraint.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/PackageConstraint.hs @@ -96,6 +96,7 @@ data PackageProperty deriving (Eq, Show, Generic) instance Binary PackageProperty +instance NFData PackageProperty instance Structured PackageProperty instance Pretty PackageProperty where diff --git a/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs b/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs index 257ba808aaa..68c7346208b 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs @@ -117,6 +117,7 @@ instance Ord ProjectConfigPath where bImporters = snd $ unconsProjectConfigPath pb instance Binary ProjectConfigPath +instance NFData ProjectConfigPath instance Structured ProjectConfigPath -- | Renders the path like this; diff --git a/cabal-install-solver/src/Distribution/Solver/Types/Settings.hs b/cabal-install-solver/src/Distribution/Solver/Types/Settings.hs index 306c0c12185..be67653f76b 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/Settings.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/Settings.hs @@ -95,6 +95,18 @@ instance Structured AllowBootLibInstalls instance Structured OnlyConstrained instance Structured SolveExecutables +instance NFData ReorderGoals +instance NFData CountConflicts +instance NFData FineGrainedConflicts +instance NFData IndependentGoals +instance NFData PreferOldest +instance NFData MinimizeConflictSet +instance NFData AvoidReinstalls +instance NFData ShadowPkgs +instance NFData StrongFlags +instance NFData AllowBootLibInstalls +instance NFData OnlyConstrained + instance Pretty OnlyConstrained where pretty OnlyConstrainedAll = PP.text "all" pretty OnlyConstrainedNone = PP.text "none" diff --git a/cabal-install/src/Distribution/Client/BuildReports/Types.hs b/cabal-install/src/Distribution/Client/BuildReports/Types.hs index 576d058c4bf..1518f8840a3 100644 --- a/cabal-install/src/Distribution/Client/BuildReports/Types.hs +++ b/cabal-install/src/Distribution/Client/BuildReports/Types.hs @@ -39,6 +39,7 @@ data ReportLevel = NoReports | AnonymousReports | DetailedReports deriving (Eq, Ord, Enum, Bounded, Show, Generic) instance Binary ReportLevel +instance NFData ReportLevel instance Structured ReportLevel instance Pretty ReportLevel where diff --git a/cabal-install/src/Distribution/Client/CmdInstall/ClientInstallFlags.hs b/cabal-install/src/Distribution/Client/CmdInstall/ClientInstallFlags.hs index 32077fe7b99..a19e7b38fcd 100644 --- a/cabal-install/src/Distribution/Client/CmdInstall/ClientInstallFlags.hs +++ b/cabal-install/src/Distribution/Client/CmdInstall/ClientInstallFlags.hs @@ -61,6 +61,7 @@ instance Semigroup ClientInstallFlags where (<>) = gmappend instance Binary ClientInstallFlags +instance NFData ClientInstallFlags instance Structured ClientInstallFlags defaultClientInstallFlags :: ClientInstallFlags diff --git a/cabal-install/src/Distribution/Client/Dependency/Types.hs b/cabal-install/src/Distribution/Client/Dependency/Types.hs index 78f97662008..269519a474b 100644 --- a/cabal-install/src/Distribution/Client/Dependency/Types.hs +++ b/cabal-install/src/Distribution/Client/Dependency/Types.hs @@ -24,6 +24,8 @@ data Solver = Modular instance Binary PreSolver instance Binary Solver +instance NFData PreSolver + instance Structured PreSolver instance Structured Solver diff --git a/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs b/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs index 220834a331c..46884f2a37c 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs @@ -355,6 +355,19 @@ instance Structured ProjectConfigProvenance instance Structured PackageConfig instance Structured ProjectFileParser +instance NFData ProjectConfigToParse where + rnf (ProjectConfigToParse bs) = rnf bs + +instance NFData ProjectConfig +instance NFData ProjectConfigBuildOnly +instance NFData ProjectConfigShared + +instance NFData ProjectConfigProvenance where + rnf Implicit = () + rnf (Explicit path) = rnf path + +instance NFData PackageConfig + -- | Newtype wrapper for 'Map' that provides a 'Monoid' instance that takes -- the last value rather than the first value for overlapping keys. newtype MapLast k v = MapLast {getMapLast :: Map k v} @@ -362,6 +375,8 @@ newtype MapLast k v = MapLast {getMapLast :: Map k v} instance (Structured k, Structured v) => Structured (MapLast k v) +instance (NFData k, NFData v) => NFData (MapLast k v) + instance Ord k => Monoid (MapLast k v) where mempty = MapLast Map.empty mappend = (<>) @@ -378,6 +393,8 @@ newtype MapMappend k v = MapMappend {getMapMappend :: Map k v} instance (Structured k, Structured v) => Structured (MapMappend k v) +instance (NFData k, NFData v) => NFData (MapMappend k v) + instance (Semigroup v, Ord k) => Monoid (MapMappend k v) where mempty = MapMappend Map.empty mappend = (<>) @@ -462,6 +479,7 @@ data SolverSettings = SolverSettings deriving (Eq, Show, Generic) instance Binary SolverSettings +instance NFData SolverSettings instance Structured SolverSettings -- | Resolved configuration for things that affect how we build and not the @@ -501,3 +519,6 @@ data BuildTimeSettings = BuildTimeSettings , buildSettingProgPathExtra :: [FilePath] , buildSettingHaddockOpen :: Bool } + deriving (Generic) + +instance NFData BuildTimeSettings diff --git a/cabal-install/src/Distribution/Client/Targets.hs b/cabal-install/src/Distribution/Client/Targets.hs index bfa94b0da80..457eb04d02a 100644 --- a/cabal-install/src/Distribution/Client/Targets.hs +++ b/cabal-install/src/Distribution/Client/Targets.hs @@ -609,6 +609,7 @@ data UserQualifier deriving (Eq, Show, Generic) instance Binary UserQualifier +instance NFData UserQualifier instance Structured UserQualifier -- | Version of 'ConstraintScope' that a user may specify on the @@ -623,6 +624,7 @@ data UserConstraintScope deriving (Eq, Show, Generic) instance Binary UserConstraintScope +instance NFData UserConstraintScope instance Structured UserConstraintScope fromUserQualifier :: UserQualifier -> Qualifier @@ -643,6 +645,7 @@ data UserConstraint deriving (Eq, Show, Generic) instance Binary UserConstraint +instance NFData UserConstraint instance Structured UserConstraint userConstraintPackageName :: UserConstraint -> PackageName diff --git a/cabal-install/src/Distribution/Client/Types/AllowNewer.hs b/cabal-install/src/Distribution/Client/Types/AllowNewer.hs index 3982993a698..a2f60470948 100644 --- a/cabal-install/src/Distribution/Client/Types/AllowNewer.hs +++ b/cabal-install/src/Distribution/Client/Types/AllowNewer.hs @@ -203,6 +203,14 @@ instance Structured RelaxedDep instance Structured AllowNewer instance Structured AllowOlder +instance NFData RelaxDeps +instance NFData RelaxDepMod +instance NFData RelaxDepScope +instance NFData RelaxDepSubject +instance NFData RelaxedDep +instance NFData AllowNewer +instance NFData AllowOlder + -- | Return 'True' if 'RelaxDeps' specifies a non-empty set of relaxations -- -- Equivalent to @isRelaxDeps = (/= 'mempty')@ diff --git a/cabal-install/src/Distribution/Client/Types/InstallMethod.hs b/cabal-install/src/Distribution/Client/Types/InstallMethod.hs index b7b24aecf08..96217cc239d 100644 --- a/cabal-install/src/Distribution/Client/Types/InstallMethod.hs +++ b/cabal-install/src/Distribution/Client/Types/InstallMethod.hs @@ -14,6 +14,7 @@ data InstallMethod deriving (Eq, Show, Generic, Bounded, Enum) instance Binary InstallMethod +instance NFData InstallMethod instance Structured InstallMethod -- | Last diff --git a/cabal-install/src/Distribution/Client/Types/OverwritePolicy.hs b/cabal-install/src/Distribution/Client/Types/OverwritePolicy.hs index e992224243a..d480989071f 100644 --- a/cabal-install/src/Distribution/Client/Types/OverwritePolicy.hs +++ b/cabal-install/src/Distribution/Client/Types/OverwritePolicy.hs @@ -15,6 +15,7 @@ data OverwritePolicy deriving (Show, Eq, Generic, Bounded, Enum) instance Binary OverwritePolicy +instance NFData OverwritePolicy instance Structured OverwritePolicy instance Parsec OverwritePolicy where diff --git a/cabal-install/src/Distribution/Client/Types/Repo.hs b/cabal-install/src/Distribution/Client/Types/Repo.hs index d3caac872db..00e80b9f2a4 100644 --- a/cabal-install/src/Distribution/Client/Types/Repo.hs +++ b/cabal-install/src/Distribution/Client/Types/Repo.hs @@ -74,6 +74,7 @@ data RemoteRepo = RemoteRepo deriving (Show, Eq, Ord, Generic) instance Binary RemoteRepo +instance NFData RemoteRepo instance Structured RemoteRepo instance Pretty RemoteRepo where @@ -134,6 +135,7 @@ data LocalRepo = LocalRepo deriving (Show, Eq, Ord, Generic) instance Binary LocalRepo +instance NFData LocalRepo instance Structured LocalRepo -- | Note: doesn't parse 'localRepoSharedCache' field. @@ -202,6 +204,7 @@ data Repo deriving (Show, Eq, Ord, Generic) instance Binary Repo +instance NFData Repo instance Structured Repo -- | Check if this is a remote repo diff --git a/cabal-install/src/Distribution/Client/Types/SourceRepo.hs b/cabal-install/src/Distribution/Client/Types/SourceRepo.hs index 05449d1887b..69767645cfc 100644 --- a/cabal-install/src/Distribution/Client/Types/SourceRepo.hs +++ b/cabal-install/src/Distribution/Client/Types/SourceRepo.hs @@ -42,6 +42,8 @@ deriving instance Show (f FilePath) => Show (SourceRepositoryPackage f) deriving instance Binary (f FilePath) => Binary (SourceRepositoryPackage f) deriving instance (Typeable f, Structured (f FilePath)) => Structured (SourceRepositoryPackage f) +instance (Typeable f, NFData (f FilePath)) => NFData (SourceRepositoryPackage f) + -- | Read from @cabal.project@ type SourceRepoList = SourceRepositoryPackage [] diff --git a/cabal-install/src/Distribution/Client/Types/WriteGhcEnvironmentFilesPolicy.hs b/cabal-install/src/Distribution/Client/Types/WriteGhcEnvironmentFilesPolicy.hs index 6db210025ee..a9e8e5b2bc2 100644 --- a/cabal-install/src/Distribution/Client/Types/WriteGhcEnvironmentFilesPolicy.hs +++ b/cabal-install/src/Distribution/Client/Types/WriteGhcEnvironmentFilesPolicy.hs @@ -20,6 +20,7 @@ data WriteGhcEnvironmentFilesPolicy deriving (Eq, Enum, Bounded, Generic, Show) instance Binary WriteGhcEnvironmentFilesPolicy +instance NFData WriteGhcEnvironmentFilesPolicy instance Structured WriteGhcEnvironmentFilesPolicy instance Parsec WriteGhcEnvironmentFilesPolicy where diff --git a/changelog.d/pr-11097 b/changelog.d/pr-11097 new file mode 100644 index 00000000000..6d9190d2199 --- /dev/null +++ b/changelog.d/pr-11097 @@ -0,0 +1,7 @@ +--- +synopsis: Add NFData instances +packages: [Cabal, cabal-install, cabal-install-solver, Cabal-syntax] +prs: 11097 +--- + +Add NFData instances necessary for HLS plugins to function. From 88d6c33fa2b9c84efe96e69ca9f55a6d4499db16 Mon Sep 17 00:00:00 2001 From: rm41339 Date: Wed, 20 Aug 2025 17:58:41 +0200 Subject: [PATCH 2/3] add missing import --- Cabal/src/Distribution/Types/ParStrat.hs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Cabal/src/Distribution/Types/ParStrat.hs b/Cabal/src/Distribution/Types/ParStrat.hs index 25c4a4df30a..3a43744e075 100644 --- a/Cabal/src/Distribution/Types/ParStrat.hs +++ b/Cabal/src/Distribution/Types/ParStrat.hs @@ -1,5 +1,7 @@ module Distribution.Types.ParStrat where +import Distribution.Compat.Prelude + -- | How to control parallelism, e.g. a fixed number of jobs or by using a system semaphore. data ParStratX sem = -- | Compile in parallel with the given number of jobs (`-jN` or `-j`). From 93c1dc727fa8a6cf5e9bcb182686c0c86b41e44a Mon Sep 17 00:00:00 2001 From: rm41339 Date: Wed, 20 Aug 2025 18:11:44 +0200 Subject: [PATCH 3/3] Add overlooked NFData instances --- Cabal/src/Distribution/Simple/Setup/Test.hs | 1 + Cabal/src/Distribution/Types/DumpBuildInfo.hs | 1 + cabal-install/src/Distribution/Client/ProjectConfig/Types.hs | 2 ++ 3 files changed, 4 insertions(+) diff --git a/Cabal/src/Distribution/Simple/Setup/Test.hs b/Cabal/src/Distribution/Simple/Setup/Test.hs index 9c65097c354..baaecaf254f 100644 --- a/Cabal/src/Distribution/Simple/Setup/Test.hs +++ b/Cabal/src/Distribution/Simple/Setup/Test.hs @@ -60,6 +60,7 @@ data TestShowDetails = Never | Failures | Always | Streaming | Direct deriving (Eq, Ord, Enum, Bounded, Generic, Show) instance Binary TestShowDetails +instance NFData TestShowDetails instance Structured TestShowDetails knownTestShowDetails :: [TestShowDetails] diff --git a/Cabal/src/Distribution/Types/DumpBuildInfo.hs b/Cabal/src/Distribution/Types/DumpBuildInfo.hs index 0e9cb8ce8d5..b946093b487 100644 --- a/Cabal/src/Distribution/Types/DumpBuildInfo.hs +++ b/Cabal/src/Distribution/Types/DumpBuildInfo.hs @@ -13,6 +13,7 @@ data DumpBuildInfo deriving (Read, Show, Eq, Ord, Enum, Bounded, Generic) instance Binary DumpBuildInfo +instance NFData DumpBuildInfo instance Structured DumpBuildInfo instance Parsec DumpBuildInfo where diff --git a/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs b/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs index 46884f2a37c..14069f57a0b 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs @@ -249,6 +249,8 @@ data ProjectFileParser | CompareParser deriving (Eq, Show, Generic) +instance NFData ProjectFileParser + defaultProjectFileParser :: ProjectFileParser #ifdef LEGACY_COMPARISON defaultProjectFileParser = CompareParser