{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveDataTypeable #-}
module Distribution.Solver.Types.OptionalStanza
( OptionalStanza(..)
, showStanza
, enableStanzas
) where
import Distribution.Solver.Compat.Prelude
import Prelude ()
import Distribution.Types.ComponentRequestedSpec
(ComponentRequestedSpec(..), defaultComponentRequestedSpec)
data OptionalStanza
= TestStanzas
| BenchStanzas
deriving (OptionalStanza -> OptionalStanza -> Bool
(OptionalStanza -> OptionalStanza -> Bool)
-> (OptionalStanza -> OptionalStanza -> Bool) -> Eq OptionalStanza
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OptionalStanza -> OptionalStanza -> Bool
$c/= :: OptionalStanza -> OptionalStanza -> Bool
== :: OptionalStanza -> OptionalStanza -> Bool
$c== :: OptionalStanza -> OptionalStanza -> Bool
Eq, Eq OptionalStanza
Eq OptionalStanza
-> (OptionalStanza -> OptionalStanza -> Ordering)
-> (OptionalStanza -> OptionalStanza -> Bool)
-> (OptionalStanza -> OptionalStanza -> Bool)
-> (OptionalStanza -> OptionalStanza -> Bool)
-> (OptionalStanza -> OptionalStanza -> Bool)
-> (OptionalStanza -> OptionalStanza -> OptionalStanza)
-> (OptionalStanza -> OptionalStanza -> OptionalStanza)
-> Ord OptionalStanza
OptionalStanza -> OptionalStanza -> Bool
OptionalStanza -> OptionalStanza -> Ordering
OptionalStanza -> OptionalStanza -> OptionalStanza
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: OptionalStanza -> OptionalStanza -> OptionalStanza
$cmin :: OptionalStanza -> OptionalStanza -> OptionalStanza
max :: OptionalStanza -> OptionalStanza -> OptionalStanza
$cmax :: OptionalStanza -> OptionalStanza -> OptionalStanza
>= :: OptionalStanza -> OptionalStanza -> Bool
$c>= :: OptionalStanza -> OptionalStanza -> Bool
> :: OptionalStanza -> OptionalStanza -> Bool
$c> :: OptionalStanza -> OptionalStanza -> Bool
<= :: OptionalStanza -> OptionalStanza -> Bool
$c<= :: OptionalStanza -> OptionalStanza -> Bool
< :: OptionalStanza -> OptionalStanza -> Bool
$c< :: OptionalStanza -> OptionalStanza -> Bool
compare :: OptionalStanza -> OptionalStanza -> Ordering
$ccompare :: OptionalStanza -> OptionalStanza -> Ordering
$cp1Ord :: Eq OptionalStanza
Ord, Int -> OptionalStanza
OptionalStanza -> Int
OptionalStanza -> [OptionalStanza]
OptionalStanza -> OptionalStanza
OptionalStanza -> OptionalStanza -> [OptionalStanza]
OptionalStanza
-> OptionalStanza -> OptionalStanza -> [OptionalStanza]
(OptionalStanza -> OptionalStanza)
-> (OptionalStanza -> OptionalStanza)
-> (Int -> OptionalStanza)
-> (OptionalStanza -> Int)
-> (OptionalStanza -> [OptionalStanza])
-> (OptionalStanza -> OptionalStanza -> [OptionalStanza])
-> (OptionalStanza -> OptionalStanza -> [OptionalStanza])
-> (OptionalStanza
-> OptionalStanza -> OptionalStanza -> [OptionalStanza])
-> Enum OptionalStanza
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: OptionalStanza
-> OptionalStanza -> OptionalStanza -> [OptionalStanza]
$cenumFromThenTo :: OptionalStanza
-> OptionalStanza -> OptionalStanza -> [OptionalStanza]
enumFromTo :: OptionalStanza -> OptionalStanza -> [OptionalStanza]
$cenumFromTo :: OptionalStanza -> OptionalStanza -> [OptionalStanza]
enumFromThen :: OptionalStanza -> OptionalStanza -> [OptionalStanza]
$cenumFromThen :: OptionalStanza -> OptionalStanza -> [OptionalStanza]
enumFrom :: OptionalStanza -> [OptionalStanza]
$cenumFrom :: OptionalStanza -> [OptionalStanza]
fromEnum :: OptionalStanza -> Int
$cfromEnum :: OptionalStanza -> Int
toEnum :: Int -> OptionalStanza
$ctoEnum :: Int -> OptionalStanza
pred :: OptionalStanza -> OptionalStanza
$cpred :: OptionalStanza -> OptionalStanza
succ :: OptionalStanza -> OptionalStanza
$csucc :: OptionalStanza -> OptionalStanza
Enum, OptionalStanza
OptionalStanza -> OptionalStanza -> Bounded OptionalStanza
forall a. a -> a -> Bounded a
maxBound :: OptionalStanza
$cmaxBound :: OptionalStanza
minBound :: OptionalStanza
$cminBound :: OptionalStanza
Bounded, Int -> OptionalStanza -> ShowS
[OptionalStanza] -> ShowS
OptionalStanza -> String
(Int -> OptionalStanza -> ShowS)
-> (OptionalStanza -> String)
-> ([OptionalStanza] -> ShowS)
-> Show OptionalStanza
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OptionalStanza] -> ShowS
$cshowList :: [OptionalStanza] -> ShowS
show :: OptionalStanza -> String
$cshow :: OptionalStanza -> String
showsPrec :: Int -> OptionalStanza -> ShowS
$cshowsPrec :: Int -> OptionalStanza -> ShowS
Show, (forall x. OptionalStanza -> Rep OptionalStanza x)
-> (forall x. Rep OptionalStanza x -> OptionalStanza)
-> Generic OptionalStanza
forall x. Rep OptionalStanza x -> OptionalStanza
forall x. OptionalStanza -> Rep OptionalStanza x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep OptionalStanza x -> OptionalStanza
$cfrom :: forall x. OptionalStanza -> Rep OptionalStanza x
Generic, Typeable)
showStanza :: OptionalStanza -> String
showStanza :: OptionalStanza -> String
showStanza OptionalStanza
TestStanzas = String
"test"
showStanza OptionalStanza
BenchStanzas = String
"bench"
enableStanzas :: [OptionalStanza] -> ComponentRequestedSpec
enableStanzas :: [OptionalStanza] -> ComponentRequestedSpec
enableStanzas = (ComponentRequestedSpec
-> OptionalStanza -> ComponentRequestedSpec)
-> ComponentRequestedSpec
-> [OptionalStanza]
-> ComponentRequestedSpec
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' ComponentRequestedSpec -> OptionalStanza -> ComponentRequestedSpec
addStanza ComponentRequestedSpec
defaultComponentRequestedSpec
where
addStanza :: ComponentRequestedSpec -> OptionalStanza -> ComponentRequestedSpec
addStanza ComponentRequestedSpec
enabled OptionalStanza
TestStanzas = ComponentRequestedSpec
enabled { testsRequested :: Bool
testsRequested = Bool
True }
addStanza ComponentRequestedSpec
enabled OptionalStanza
BenchStanzas = ComponentRequestedSpec
enabled { benchmarksRequested :: Bool
benchmarksRequested = Bool
True }
instance Binary OptionalStanza
instance Structured OptionalStanza