{- 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.ClientSymbolResolveOptions 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 Data.Text
import qualified Language.LSP.Protocol.Types.Common

{-|
@since 3.18.0
@proposed
-}
data ClientSymbolResolveOptions = ClientSymbolResolveOptions 
  { {-|
  The properties that a client can resolve lazily. Usually
  `location.range`
  -}
  ClientSymbolResolveOptions -> [Text]
_properties :: [Data.Text.Text]
  }
  deriving stock (Int -> ClientSymbolResolveOptions -> ShowS
[ClientSymbolResolveOptions] -> ShowS
ClientSymbolResolveOptions -> String
(Int -> ClientSymbolResolveOptions -> ShowS)
-> (ClientSymbolResolveOptions -> String)
-> ([ClientSymbolResolveOptions] -> ShowS)
-> Show ClientSymbolResolveOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ClientSymbolResolveOptions -> ShowS
showsPrec :: Int -> ClientSymbolResolveOptions -> ShowS
$cshow :: ClientSymbolResolveOptions -> String
show :: ClientSymbolResolveOptions -> String
$cshowList :: [ClientSymbolResolveOptions] -> ShowS
showList :: [ClientSymbolResolveOptions] -> ShowS
Show, ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
(ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool)
-> (ClientSymbolResolveOptions
    -> ClientSymbolResolveOptions -> Bool)
-> Eq ClientSymbolResolveOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
== :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
$c/= :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
/= :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
Eq, Eq ClientSymbolResolveOptions
Eq ClientSymbolResolveOptions =>
(ClientSymbolResolveOptions
 -> ClientSymbolResolveOptions -> Ordering)
-> (ClientSymbolResolveOptions
    -> ClientSymbolResolveOptions -> Bool)
-> (ClientSymbolResolveOptions
    -> ClientSymbolResolveOptions -> Bool)
-> (ClientSymbolResolveOptions
    -> ClientSymbolResolveOptions -> Bool)
-> (ClientSymbolResolveOptions
    -> ClientSymbolResolveOptions -> Bool)
-> (ClientSymbolResolveOptions
    -> ClientSymbolResolveOptions -> ClientSymbolResolveOptions)
-> (ClientSymbolResolveOptions
    -> ClientSymbolResolveOptions -> ClientSymbolResolveOptions)
-> Ord ClientSymbolResolveOptions
ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
ClientSymbolResolveOptions
-> ClientSymbolResolveOptions -> Ordering
ClientSymbolResolveOptions
-> ClientSymbolResolveOptions -> ClientSymbolResolveOptions
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 :: ClientSymbolResolveOptions
-> ClientSymbolResolveOptions -> Ordering
compare :: ClientSymbolResolveOptions
-> ClientSymbolResolveOptions -> Ordering
$c< :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
< :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
$c<= :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
<= :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
$c> :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
> :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
$c>= :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
>= :: ClientSymbolResolveOptions -> ClientSymbolResolveOptions -> Bool
$cmax :: ClientSymbolResolveOptions
-> ClientSymbolResolveOptions -> ClientSymbolResolveOptions
max :: ClientSymbolResolveOptions
-> ClientSymbolResolveOptions -> ClientSymbolResolveOptions
$cmin :: ClientSymbolResolveOptions
-> ClientSymbolResolveOptions -> ClientSymbolResolveOptions
min :: ClientSymbolResolveOptions
-> ClientSymbolResolveOptions -> ClientSymbolResolveOptions
Ord, (forall x.
 ClientSymbolResolveOptions -> Rep ClientSymbolResolveOptions x)
-> (forall x.
    Rep ClientSymbolResolveOptions x -> ClientSymbolResolveOptions)
-> Generic ClientSymbolResolveOptions
forall x.
Rep ClientSymbolResolveOptions x -> ClientSymbolResolveOptions
forall x.
ClientSymbolResolveOptions -> Rep ClientSymbolResolveOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
ClientSymbolResolveOptions -> Rep ClientSymbolResolveOptions x
from :: forall x.
ClientSymbolResolveOptions -> Rep ClientSymbolResolveOptions x
$cto :: forall x.
Rep ClientSymbolResolveOptions x -> ClientSymbolResolveOptions
to :: forall x.
Rep ClientSymbolResolveOptions x -> ClientSymbolResolveOptions
Generic)
  deriving anyclass (ClientSymbolResolveOptions -> ()
(ClientSymbolResolveOptions -> ())
-> NFData ClientSymbolResolveOptions
forall a. (a -> ()) -> NFData a
$crnf :: ClientSymbolResolveOptions -> ()
rnf :: ClientSymbolResolveOptions -> ()
NFData, Eq ClientSymbolResolveOptions
Eq ClientSymbolResolveOptions =>
(Int -> ClientSymbolResolveOptions -> Int)
-> (ClientSymbolResolveOptions -> Int)
-> Hashable ClientSymbolResolveOptions
Int -> ClientSymbolResolveOptions -> Int
ClientSymbolResolveOptions -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> ClientSymbolResolveOptions -> Int
hashWithSalt :: Int -> ClientSymbolResolveOptions -> Int
$chash :: ClientSymbolResolveOptions -> Int
hash :: ClientSymbolResolveOptions -> Int
Hashable)
  deriving (forall ann. ClientSymbolResolveOptions -> Doc ann)
-> (forall ann. [ClientSymbolResolveOptions] -> Doc ann)
-> Pretty ClientSymbolResolveOptions
forall ann. [ClientSymbolResolveOptions] -> Doc ann
forall ann. ClientSymbolResolveOptions -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. ClientSymbolResolveOptions -> Doc ann
pretty :: forall ann. ClientSymbolResolveOptions -> Doc ann
$cprettyList :: forall ann. [ClientSymbolResolveOptions] -> Doc ann
prettyList :: forall ann. [ClientSymbolResolveOptions] -> Doc ann
Pretty via (ViaJSON ClientSymbolResolveOptions)

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

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