module CabalGild.Unstable.Exception.DuplicateOption where

import qualified Control.Monad.Catch as Exception

-- | This exception is thrown when an option is specified more than once.
data DuplicateOption
  = DuplicateOption
  { DuplicateOption -> String
option :: String,
    DuplicateOption -> String
old :: String,
    DuplicateOption -> String
new :: String
  }
  deriving (DuplicateOption -> DuplicateOption -> Bool
(DuplicateOption -> DuplicateOption -> Bool)
-> (DuplicateOption -> DuplicateOption -> Bool)
-> Eq DuplicateOption
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DuplicateOption -> DuplicateOption -> Bool
== :: DuplicateOption -> DuplicateOption -> Bool
$c/= :: DuplicateOption -> DuplicateOption -> Bool
/= :: DuplicateOption -> DuplicateOption -> Bool
Eq, Int -> DuplicateOption -> ShowS
[DuplicateOption] -> ShowS
DuplicateOption -> String
(Int -> DuplicateOption -> ShowS)
-> (DuplicateOption -> String)
-> ([DuplicateOption] -> ShowS)
-> Show DuplicateOption
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DuplicateOption -> ShowS
showsPrec :: Int -> DuplicateOption -> ShowS
$cshow :: DuplicateOption -> String
show :: DuplicateOption -> String
$cshowList :: [DuplicateOption] -> ShowS
showList :: [DuplicateOption] -> ShowS
Show)

instance Exception.Exception DuplicateOption where
  displayException :: DuplicateOption -> String
displayException DuplicateOption
x =
    String
"overriding option --"
      String -> ShowS
forall a. Semigroup a => a -> a -> a
<> DuplicateOption -> String
option DuplicateOption
x
      String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
" (before: "
      String -> ShowS
forall a. Semigroup a => a -> a -> a
<> DuplicateOption -> String
old DuplicateOption
x
      String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
", after: "
      String -> ShowS
forall a. Semigroup a => a -> a -> a
<> DuplicateOption -> String
new DuplicateOption
x
      String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
")"