never executed always true always false
    1 {-# LANGUAGE DeriveGeneric #-}
    2 module Distribution.Client.Types.OverwritePolicy where
    3 
    4 import Distribution.Client.Compat.Prelude
    5 import Prelude ()
    6 
    7 import qualified Distribution.Compat.CharParsing as P
    8 import qualified Text.PrettyPrint                as PP
    9 
   10 data OverwritePolicy
   11     = NeverOverwrite
   12     | AlwaysOverwrite
   13   deriving (Show, Eq, Generic, Bounded, Enum)
   14 
   15 instance Binary OverwritePolicy
   16 instance Structured OverwritePolicy
   17 
   18 instance Parsec OverwritePolicy where
   19     parsec = do
   20         name <- P.munch1 isAlpha
   21         case name of
   22             "always" -> pure AlwaysOverwrite
   23             "never"  -> pure NeverOverwrite
   24             _        -> P.unexpected $ "OverwritePolicy: " ++ name
   25 
   26 instance Pretty OverwritePolicy where
   27     pretty NeverOverwrite  = PP.text "never"
   28     pretty AlwaysOverwrite = PP.text "always"