{- 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.ClientSymbolTagOptions 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.SymbolTag
import qualified Language.LSP.Protocol.Types.Common

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

instance Aeson.ToJSON ClientSymbolTagOptions where
  toJSON :: ClientSymbolTagOptions -> Value
toJSON (ClientSymbolTagOptions [SymbolTag]
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 -> [SymbolTag] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= [SymbolTag]
arg0]]

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