    {-# LANGUAGE DeriveDataTypeable #-}
    {-# LANGUAGE DeriveGeneric #-}

    module Distribution.Verbosity.Internal
      ( VerbosityLevel (..)
      , VerbosityFlag (..)
      ) where

    import Distribution.Compat.Prelude
    import Prelude ()

    data VerbosityLevel = Silent | Normal | Verbose | Deafening
      deriving ((forall x. VerbosityLevel -> Rep VerbosityLevel x)
    -> (forall x. Rep VerbosityLevel x -> VerbosityLevel)
    -> Generic VerbosityLevel
    forall x. Rep VerbosityLevel x -> VerbosityLevel
    forall x. VerbosityLevel -> Rep VerbosityLevel x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cfrom :: forall x. VerbosityLevel -> Rep VerbosityLevel x
    from :: forall x. VerbosityLevel -> Rep VerbosityLevel x
    $cto :: forall x. Rep VerbosityLevel x -> VerbosityLevel
    to :: forall x. Rep VerbosityLevel x -> VerbosityLevel
    Generic, Int -> VerbosityLevel -> ShowS
    [VerbosityLevel] -> ShowS
    VerbosityLevel -> String
    (Int -> VerbosityLevel -> ShowS)
    -> (VerbosityLevel -> String)
    -> ([VerbosityLevel] -> ShowS)
    -> Show VerbosityLevel
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> VerbosityLevel -> ShowS
    showsPrec :: Int -> VerbosityLevel -> ShowS
    $cshow :: VerbosityLevel -> String
    show :: VerbosityLevel -> String
    $cshowList :: [VerbosityLevel] -> ShowS
    showList :: [VerbosityLevel] -> ShowS
    Show, ReadPrec [VerbosityLevel]
    ReadPrec VerbosityLevel
    Int -> ReadS VerbosityLevel
    ReadS [VerbosityLevel]
    (Int -> ReadS VerbosityLevel)
    -> ReadS [VerbosityLevel]
    -> ReadPrec VerbosityLevel
    -> ReadPrec [VerbosityLevel]
    -> Read VerbosityLevel
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: Int -> ReadS VerbosityLevel
    readsPrec :: Int -> ReadS VerbosityLevel
    $creadList :: ReadS [VerbosityLevel]
    readList :: ReadS [VerbosityLevel]
    $creadPrec :: ReadPrec VerbosityLevel
    readPrec :: ReadPrec VerbosityLevel
    $creadListPrec :: ReadPrec [VerbosityLevel]
    readListPrec :: ReadPrec [VerbosityLevel]
    Read, VerbosityLevel -> VerbosityLevel -> Bool
    (VerbosityLevel -> VerbosityLevel -> Bool)
    -> (VerbosityLevel -> VerbosityLevel -> Bool) -> Eq VerbosityLevel
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: VerbosityLevel -> VerbosityLevel -> Bool
    == :: VerbosityLevel -> VerbosityLevel -> Bool
    $c/= :: VerbosityLevel -> VerbosityLevel -> Bool
    /= :: VerbosityLevel -> VerbosityLevel -> Bool
    Eq, Eq VerbosityLevel
    Eq VerbosityLevel =>
    (VerbosityLevel -> VerbosityLevel -> Ordering)
    -> (VerbosityLevel -> VerbosityLevel -> Bool)
    -> (VerbosityLevel -> VerbosityLevel -> Bool)
    -> (VerbosityLevel -> VerbosityLevel -> Bool)
    -> (VerbosityLevel -> VerbosityLevel -> Bool)
    -> (VerbosityLevel -> VerbosityLevel -> VerbosityLevel)
    -> (VerbosityLevel -> VerbosityLevel -> VerbosityLevel)
    -> Ord VerbosityLevel
    VerbosityLevel -> VerbosityLevel -> Bool
    VerbosityLevel -> VerbosityLevel -> Ordering
    VerbosityLevel -> VerbosityLevel -> VerbosityLevel
    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
    $ccompare :: VerbosityLevel -> VerbosityLevel -> Ordering
    compare :: VerbosityLevel -> VerbosityLevel -> Ordering
    $c< :: VerbosityLevel -> VerbosityLevel -> Bool
    < :: VerbosityLevel -> VerbosityLevel -> Bool
    $c<= :: VerbosityLevel -> VerbosityLevel -> Bool
    <= :: VerbosityLevel -> VerbosityLevel -> Bool
    $c> :: VerbosityLevel -> VerbosityLevel -> Bool
    > :: VerbosityLevel -> VerbosityLevel -> Bool
    $c>= :: VerbosityLevel -> VerbosityLevel -> Bool
    >= :: VerbosityLevel -> VerbosityLevel -> Bool
    $cmax :: VerbosityLevel -> VerbosityLevel -> VerbosityLevel
    max :: VerbosityLevel -> VerbosityLevel -> VerbosityLevel
    $cmin :: VerbosityLevel -> VerbosityLevel -> VerbosityLevel
    min :: VerbosityLevel -> VerbosityLevel -> VerbosityLevel
    Ord, Int -> VerbosityLevel
    VerbosityLevel -> Int
    VerbosityLevel -> [VerbosityLevel]
    VerbosityLevel -> VerbosityLevel
    VerbosityLevel -> VerbosityLevel -> [VerbosityLevel]
    VerbosityLevel
    -> VerbosityLevel -> VerbosityLevel -> [VerbosityLevel]
    (VerbosityLevel -> VerbosityLevel)
    -> (VerbosityLevel -> VerbosityLevel)
    -> (Int -> VerbosityLevel)
    -> (VerbosityLevel -> Int)
    -> (VerbosityLevel -> [VerbosityLevel])
    -> (VerbosityLevel -> VerbosityLevel -> [VerbosityLevel])
    -> (VerbosityLevel -> VerbosityLevel -> [VerbosityLevel])
    -> (VerbosityLevel
        -> VerbosityLevel -> VerbosityLevel -> [VerbosityLevel])
    -> Enum VerbosityLevel
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    $csucc :: VerbosityLevel -> VerbosityLevel
    succ :: VerbosityLevel -> VerbosityLevel
    $cpred :: VerbosityLevel -> VerbosityLevel
    pred :: VerbosityLevel -> VerbosityLevel
    $ctoEnum :: Int -> VerbosityLevel
    toEnum :: Int -> VerbosityLevel
    $cfromEnum :: VerbosityLevel -> Int
    fromEnum :: VerbosityLevel -> Int
    $cenumFrom :: VerbosityLevel -> [VerbosityLevel]
    enumFrom :: VerbosityLevel -> [VerbosityLevel]
    $cenumFromThen :: VerbosityLevel -> VerbosityLevel -> [VerbosityLevel]
    enumFromThen :: VerbosityLevel -> VerbosityLevel -> [VerbosityLevel]
    $cenumFromTo :: VerbosityLevel -> VerbosityLevel -> [VerbosityLevel]
    enumFromTo :: VerbosityLevel -> VerbosityLevel -> [VerbosityLevel]
    $cenumFromThenTo :: VerbosityLevel
    -> VerbosityLevel -> VerbosityLevel -> [VerbosityLevel]
    enumFromThenTo :: VerbosityLevel
    -> VerbosityLevel -> VerbosityLevel -> [VerbosityLevel]
    Enum, VerbosityLevel
    VerbosityLevel -> VerbosityLevel -> Bounded VerbosityLevel
    forall a. a -> a -> Bounded a
    $cminBound :: VerbosityLevel
    minBound :: VerbosityLevel
    $cmaxBound :: VerbosityLevel
    maxBound :: VerbosityLevel
    Bounded, Typeable)

    instance Binary VerbosityLevel
    instance Structured VerbosityLevel

    data VerbosityFlag
      = VCallStack
      | VCallSite
      | VNoWrap
      | VMarkOutput
      | VTimestamp
      | -- | @since 3.4.0.0
        VStderr
      | VNoWarn
      deriving ((forall x. VerbosityFlag -> Rep VerbosityFlag x)
    -> (forall x. Rep VerbosityFlag x -> VerbosityFlag)
    -> Generic VerbosityFlag
    forall x. Rep VerbosityFlag x -> VerbosityFlag
    forall x. VerbosityFlag -> Rep VerbosityFlag x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cfrom :: forall x. VerbosityFlag -> Rep VerbosityFlag x
    from :: forall x. VerbosityFlag -> Rep VerbosityFlag x
    $cto :: forall x. Rep VerbosityFlag x -> VerbosityFlag
    to :: forall x. Rep VerbosityFlag x -> VerbosityFlag
    Generic, Int -> VerbosityFlag -> ShowS
    [VerbosityFlag] -> ShowS
    VerbosityFlag -> String
    (Int -> VerbosityFlag -> ShowS)
    -> (VerbosityFlag -> String)
    -> ([VerbosityFlag] -> ShowS)
    -> Show VerbosityFlag
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> VerbosityFlag -> ShowS
    showsPrec :: Int -> VerbosityFlag -> ShowS
    $cshow :: VerbosityFlag -> String
    show :: VerbosityFlag -> String
    $cshowList :: [VerbosityFlag] -> ShowS
    showList :: [VerbosityFlag] -> ShowS
    Show, ReadPrec [VerbosityFlag]
    ReadPrec VerbosityFlag
    Int -> ReadS VerbosityFlag
    ReadS [VerbosityFlag]
    (Int -> ReadS VerbosityFlag)
    -> ReadS [VerbosityFlag]
    -> ReadPrec VerbosityFlag
    -> ReadPrec [VerbosityFlag]
    -> Read VerbosityFlag
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: Int -> ReadS VerbosityFlag
    readsPrec :: Int -> ReadS VerbosityFlag
    $creadList :: ReadS [VerbosityFlag]
    readList :: ReadS [VerbosityFlag]
    $creadPrec :: ReadPrec VerbosityFlag
    readPrec :: ReadPrec VerbosityFlag
    $creadListPrec :: ReadPrec [VerbosityFlag]
    readListPrec :: ReadPrec [VerbosityFlag]
    Read, VerbosityFlag -> VerbosityFlag -> Bool
    (VerbosityFlag -> VerbosityFlag -> Bool)
    -> (VerbosityFlag -> VerbosityFlag -> Bool) -> Eq VerbosityFlag
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: VerbosityFlag -> VerbosityFlag -> Bool
    == :: VerbosityFlag -> VerbosityFlag -> Bool
    $c/= :: VerbosityFlag -> VerbosityFlag -> Bool
    /= :: VerbosityFlag -> VerbosityFlag -> Bool
    Eq, Eq VerbosityFlag
    Eq VerbosityFlag =>
    (VerbosityFlag -> VerbosityFlag -> Ordering)
    -> (VerbosityFlag -> VerbosityFlag -> Bool)
    -> (VerbosityFlag -> VerbosityFlag -> Bool)
    -> (VerbosityFlag -> VerbosityFlag -> Bool)
    -> (VerbosityFlag -> VerbosityFlag -> Bool)
    -> (VerbosityFlag -> VerbosityFlag -> VerbosityFlag)
    -> (VerbosityFlag -> VerbosityFlag -> VerbosityFlag)
    -> Ord VerbosityFlag
    VerbosityFlag -> VerbosityFlag -> Bool
    VerbosityFlag -> VerbosityFlag -> Ordering
    VerbosityFlag -> VerbosityFlag -> VerbosityFlag
    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
    $ccompare :: VerbosityFlag -> VerbosityFlag -> Ordering
    compare :: VerbosityFlag -> VerbosityFlag -> Ordering
    $c< :: VerbosityFlag -> VerbosityFlag -> Bool
    < :: VerbosityFlag -> VerbosityFlag -> Bool
    $c<= :: VerbosityFlag -> VerbosityFlag -> Bool
    <= :: VerbosityFlag -> VerbosityFlag -> Bool
    $c> :: VerbosityFlag -> VerbosityFlag -> Bool
    > :: VerbosityFlag -> VerbosityFlag -> Bool
    $c>= :: VerbosityFlag -> VerbosityFlag -> Bool
    >= :: VerbosityFlag -> VerbosityFlag -> Bool
    $cmax :: VerbosityFlag -> VerbosityFlag -> VerbosityFlag
    max :: VerbosityFlag -> VerbosityFlag -> VerbosityFlag
    $cmin :: VerbosityFlag -> VerbosityFlag -> VerbosityFlag
    min :: VerbosityFlag -> VerbosityFlag -> VerbosityFlag
    Ord, Int -> VerbosityFlag
    VerbosityFlag -> Int
    VerbosityFlag -> [VerbosityFlag]
    VerbosityFlag -> VerbosityFlag
    VerbosityFlag -> VerbosityFlag -> [VerbosityFlag]
    VerbosityFlag -> VerbosityFlag -> VerbosityFlag -> [VerbosityFlag]
    (VerbosityFlag -> VerbosityFlag)
    -> (VerbosityFlag -> VerbosityFlag)
    -> (Int -> VerbosityFlag)
    -> (VerbosityFlag -> Int)
    -> (VerbosityFlag -> [VerbosityFlag])
    -> (VerbosityFlag -> VerbosityFlag -> [VerbosityFlag])
    -> (VerbosityFlag -> VerbosityFlag -> [VerbosityFlag])
    -> (VerbosityFlag
        -> VerbosityFlag -> VerbosityFlag -> [VerbosityFlag])
    -> Enum VerbosityFlag
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    $csucc :: VerbosityFlag -> VerbosityFlag
    succ :: VerbosityFlag -> VerbosityFlag
    $cpred :: VerbosityFlag -> VerbosityFlag
    pred :: VerbosityFlag -> VerbosityFlag
    $ctoEnum :: Int -> VerbosityFlag
    toEnum :: Int -> VerbosityFlag
    $cfromEnum :: VerbosityFlag -> Int
    fromEnum :: VerbosityFlag -> Int
    $cenumFrom :: VerbosityFlag -> [VerbosityFlag]
    enumFrom :: VerbosityFlag -> [VerbosityFlag]
    $cenumFromThen :: VerbosityFlag -> VerbosityFlag -> [VerbosityFlag]
    enumFromThen :: VerbosityFlag -> VerbosityFlag -> [VerbosityFlag]
    $cenumFromTo :: VerbosityFlag -> VerbosityFlag -> [VerbosityFlag]
    enumFromTo :: VerbosityFlag -> VerbosityFlag -> [VerbosityFlag]
    $cenumFromThenTo :: VerbosityFlag -> VerbosityFlag -> VerbosityFlag -> [VerbosityFlag]
    enumFromThenTo :: VerbosityFlag -> VerbosityFlag -> VerbosityFlag -> [VerbosityFlag]
    Enum, VerbosityFlag
    VerbosityFlag -> VerbosityFlag -> Bounded VerbosityFlag
    forall a. a -> a -> Bounded a
    $cminBound :: VerbosityFlag
    minBound :: VerbosityFlag
    $cmaxBound :: VerbosityFlag
    maxBound :: VerbosityFlag
    Bounded, Typeable)

    instance Binary VerbosityFlag
    instance Structured VerbosityFlag