module GHC.Data.Bool
  ( OverridingBool(..)
  , overrideWith
  )
where

import GHC.Prelude

data OverridingBool
  = Auto
  | Never
  | Always
  deriving
    ( Int -> OverridingBool -> ShowS
[OverridingBool] -> ShowS
OverridingBool -> String
(Int -> OverridingBool -> ShowS)
-> (OverridingBool -> String)
-> ([OverridingBool] -> ShowS)
-> Show OverridingBool
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OverridingBool] -> ShowS
$cshowList :: [OverridingBool] -> ShowS
show :: OverridingBool -> String
$cshow :: OverridingBool -> String
showsPrec :: Int -> OverridingBool -> ShowS
$cshowsPrec :: Int -> OverridingBool -> ShowS
Show
    , Read    -- ^ @since 9.4.1
    , Eq      -- ^ @since 9.4.1
    , Ord     -- ^ @since 9.4.1
    , Enum    -- ^ @since 9.4.1
    , Bounded -- ^ @since 9.4.1
    )

overrideWith :: Bool -> OverridingBool -> Bool
overrideWith :: Bool -> OverridingBool -> Bool
overrideWith Bool
b OverridingBool
Auto   = Bool
b
overrideWith Bool
_ OverridingBool
Never  = Bool
False
overrideWith Bool
_ OverridingBool
Always = Bool
True