{- ORMOLU_DISABLE -}
{- HLINT ignore -}
-- THIS IS A GENERATED FILE, DO NOT EDIT

{-# OPTIONS_GHC -Wno-unused-imports #-}
{-# OPTIONS_GHC -Wno-unused-matches #-}
{-# OPTIONS_GHC -Wno-deprecations #-}
module Language.LSP.Protocol.Internal.Types.ClientDiagnosticsTagOptions where

import Control.DeepSeq
import Data.Hashable
import GHC.Generics
import Language.LSP.Protocol.Utils.Misc
import Prettyprinter
import qualified Data.Aeson as Aeson
import qualified Data.Row.Aeson as Aeson
import qualified Data.Row.Hashable as Hashable
import qualified Language.LSP.Protocol.Internal.Types.DiagnosticTag
import qualified Language.LSP.Protocol.Types.Common

{-|
@since 3.18.0
@proposed
-}
data ClientDiagnosticsTagOptions = ClientDiagnosticsTagOptions 
  { {-|
  The tags supported by the client.
  -}
  ClientDiagnosticsTagOptions -> [DiagnosticTag]
_valueSet :: [Language.LSP.Protocol.Internal.Types.DiagnosticTag.DiagnosticTag]
  }
  deriving stock (Int -> ClientDiagnosticsTagOptions -> ShowS
[ClientDiagnosticsTagOptions] -> ShowS
ClientDiagnosticsTagOptions -> String
(Int -> ClientDiagnosticsTagOptions -> ShowS)
-> (ClientDiagnosticsTagOptions -> String)
-> ([ClientDiagnosticsTagOptions] -> ShowS)
-> Show ClientDiagnosticsTagOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ClientDiagnosticsTagOptions -> ShowS
showsPrec :: Int -> ClientDiagnosticsTagOptions -> ShowS
$cshow :: ClientDiagnosticsTagOptions -> String
show :: ClientDiagnosticsTagOptions -> String
$cshowList :: [ClientDiagnosticsTagOptions] -> ShowS
showList :: [ClientDiagnosticsTagOptions] -> ShowS
Show, ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
(ClientDiagnosticsTagOptions
 -> ClientDiagnosticsTagOptions -> Bool)
-> (ClientDiagnosticsTagOptions
    -> ClientDiagnosticsTagOptions -> Bool)
-> Eq ClientDiagnosticsTagOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
== :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
$c/= :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
/= :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
Eq, Eq ClientDiagnosticsTagOptions
Eq ClientDiagnosticsTagOptions =>
(ClientDiagnosticsTagOptions
 -> ClientDiagnosticsTagOptions -> Ordering)
-> (ClientDiagnosticsTagOptions
    -> ClientDiagnosticsTagOptions -> Bool)
-> (ClientDiagnosticsTagOptions
    -> ClientDiagnosticsTagOptions -> Bool)
-> (ClientDiagnosticsTagOptions
    -> ClientDiagnosticsTagOptions -> Bool)
-> (ClientDiagnosticsTagOptions
    -> ClientDiagnosticsTagOptions -> Bool)
-> (ClientDiagnosticsTagOptions
    -> ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions)
-> (ClientDiagnosticsTagOptions
    -> ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions)
-> Ord ClientDiagnosticsTagOptions
ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
ClientDiagnosticsTagOptions
-> ClientDiagnosticsTagOptions -> Ordering
ClientDiagnosticsTagOptions
-> ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions
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 :: ClientDiagnosticsTagOptions
-> ClientDiagnosticsTagOptions -> Ordering
compare :: ClientDiagnosticsTagOptions
-> ClientDiagnosticsTagOptions -> Ordering
$c< :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
< :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
$c<= :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
<= :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
$c> :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
> :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
$c>= :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
>= :: ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions -> Bool
$cmax :: ClientDiagnosticsTagOptions
-> ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions
max :: ClientDiagnosticsTagOptions
-> ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions
$cmin :: ClientDiagnosticsTagOptions
-> ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions
min :: ClientDiagnosticsTagOptions
-> ClientDiagnosticsTagOptions -> ClientDiagnosticsTagOptions
Ord, (forall x.
 ClientDiagnosticsTagOptions -> Rep ClientDiagnosticsTagOptions x)
-> (forall x.
    Rep ClientDiagnosticsTagOptions x -> ClientDiagnosticsTagOptions)
-> Generic ClientDiagnosticsTagOptions
forall x.
Rep ClientDiagnosticsTagOptions x -> ClientDiagnosticsTagOptions
forall x.
ClientDiagnosticsTagOptions -> Rep ClientDiagnosticsTagOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
ClientDiagnosticsTagOptions -> Rep ClientDiagnosticsTagOptions x
from :: forall x.
ClientDiagnosticsTagOptions -> Rep ClientDiagnosticsTagOptions x
$cto :: forall x.
Rep ClientDiagnosticsTagOptions x -> ClientDiagnosticsTagOptions
to :: forall x.
Rep ClientDiagnosticsTagOptions x -> ClientDiagnosticsTagOptions
Generic)
  deriving anyclass (ClientDiagnosticsTagOptions -> ()
(ClientDiagnosticsTagOptions -> ())
-> NFData ClientDiagnosticsTagOptions
forall a. (a -> ()) -> NFData a
$crnf :: ClientDiagnosticsTagOptions -> ()
rnf :: ClientDiagnosticsTagOptions -> ()
NFData, Eq ClientDiagnosticsTagOptions
Eq ClientDiagnosticsTagOptions =>
(Int -> ClientDiagnosticsTagOptions -> Int)
-> (ClientDiagnosticsTagOptions -> Int)
-> Hashable ClientDiagnosticsTagOptions
Int -> ClientDiagnosticsTagOptions -> Int
ClientDiagnosticsTagOptions -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> ClientDiagnosticsTagOptions -> Int
hashWithSalt :: Int -> ClientDiagnosticsTagOptions -> Int
$chash :: ClientDiagnosticsTagOptions -> Int
hash :: ClientDiagnosticsTagOptions -> Int
Hashable)
  deriving (forall ann. ClientDiagnosticsTagOptions -> Doc ann)
-> (forall ann. [ClientDiagnosticsTagOptions] -> Doc ann)
-> Pretty ClientDiagnosticsTagOptions
forall ann. [ClientDiagnosticsTagOptions] -> Doc ann
forall ann. ClientDiagnosticsTagOptions -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. ClientDiagnosticsTagOptions -> Doc ann
pretty :: forall ann. ClientDiagnosticsTagOptions -> Doc ann
$cprettyList :: forall ann. [ClientDiagnosticsTagOptions] -> Doc ann
prettyList :: forall ann. [ClientDiagnosticsTagOptions] -> Doc ann
Pretty via (ViaJSON ClientDiagnosticsTagOptions)

instance Aeson.ToJSON ClientDiagnosticsTagOptions where
  toJSON :: ClientDiagnosticsTagOptions -> Value
toJSON (ClientDiagnosticsTagOptions [DiagnosticTag]
arg0) = [Pair] -> Value
Aeson.object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ [[Pair]] -> [Pair]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[Pair]] -> [Pair]) -> [[Pair]] -> [Pair]
forall a b. (a -> b) -> a -> b
$  [[Key
"valueSet" Key -> [DiagnosticTag] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= [DiagnosticTag]
arg0]]

instance Aeson.FromJSON ClientDiagnosticsTagOptions where
  parseJSON :: Value -> Parser ClientDiagnosticsTagOptions
parseJSON = String
-> (Object -> Parser ClientDiagnosticsTagOptions)
-> Value
-> Parser ClientDiagnosticsTagOptions
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"ClientDiagnosticsTagOptions" ((Object -> Parser ClientDiagnosticsTagOptions)
 -> Value -> Parser ClientDiagnosticsTagOptions)
-> (Object -> Parser ClientDiagnosticsTagOptions)
-> Value
-> Parser ClientDiagnosticsTagOptions
forall a b. (a -> b) -> a -> b
$ \Object
arg -> [DiagnosticTag] -> ClientDiagnosticsTagOptions
ClientDiagnosticsTagOptions ([DiagnosticTag] -> ClientDiagnosticsTagOptions)
-> Parser [DiagnosticTag] -> Parser ClientDiagnosticsTagOptions
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser [DiagnosticTag]
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"valueSet"