    module Test.Tasty.Discover.TastyInfo
      ( TastyInfo(..)
      ) where

    import Data.Monoid
    import GHC.Generics (Generic)

    data TastyInfo = TastyInfo
      { TastyInfo -> Last String
    name        :: Last String
      , TastyInfo -> Last String
    description :: Last String
      } deriving stock (TastyInfo -> TastyInfo -> Bool
    (TastyInfo -> TastyInfo -> Bool)
    -> (TastyInfo -> TastyInfo -> Bool) -> Eq TastyInfo
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: TastyInfo -> TastyInfo -> Bool
    == :: TastyInfo -> TastyInfo -> Bool
    $c/= :: TastyInfo -> TastyInfo -> Bool
    /= :: TastyInfo -> TastyInfo -> Bool
    Eq, Int -> TastyInfo -> ShowS
    [TastyInfo] -> ShowS
    TastyInfo -> String
    (Int -> TastyInfo -> ShowS)
    -> (TastyInfo -> String)
    -> ([TastyInfo] -> ShowS)
    -> Show TastyInfo
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> TastyInfo -> ShowS
    showsPrec :: Int -> TastyInfo -> ShowS
    $cshow :: TastyInfo -> String
    show :: TastyInfo -> String
    $cshowList :: [TastyInfo] -> ShowS
    showList :: [TastyInfo] -> ShowS
    Show, (forall x. TastyInfo -> Rep TastyInfo x)
    -> (forall x. Rep TastyInfo x -> TastyInfo) -> Generic TastyInfo
    forall x. Rep TastyInfo x -> TastyInfo
    forall x. TastyInfo -> Rep TastyInfo x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cfrom :: forall x. TastyInfo -> Rep TastyInfo x
    from :: forall x. TastyInfo -> Rep TastyInfo x
    $cto :: forall x. Rep TastyInfo x -> TastyInfo
    to :: forall x. Rep TastyInfo x -> TastyInfo
    Generic)

    instance Semigroup TastyInfo where
      TastyInfo
    a <> :: TastyInfo -> TastyInfo -> TastyInfo
    <> TastyInfo
    b = TastyInfo
        { name :: Last String
    name        = TastyInfo -> Last String
    name TastyInfo
    a        Last String -> Last String -> Last String
    forall a. Semigroup a => a -> a -> a
    <> TastyInfo -> Last String
    name TastyInfo
    b
        , description :: Last String
    description = TastyInfo -> Last String
    description TastyInfo
    a Last String -> Last String -> Last String
    forall a. Semigroup a => a -> a -> a
    <> TastyInfo -> Last String
    description TastyInfo
    b
        }

    instance Monoid TastyInfo where
      mempty :: TastyInfo
    mempty = TastyInfo
        { name :: Last String
    name        = Maybe String -> Last String
    forall a. Maybe a -> Last a
    Last Maybe String
    forall a. Maybe a
    Nothing
        , description :: Last String
    description = Maybe String -> Last String
    forall a. Maybe a -> Last a
    Last Maybe String
    forall a. Maybe a
    Nothing
        }