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

instance Aeson.ToJSON ClientCompletionItemResolveOptions where
  toJSON :: ClientCompletionItemResolveOptions -> Value
toJSON (ClientCompletionItemResolveOptions [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 ClientCompletionItemResolveOptions where
  parseJSON :: Value -> Parser ClientCompletionItemResolveOptions
parseJSON = String
-> (Object -> Parser ClientCompletionItemResolveOptions)
-> Value
-> Parser ClientCompletionItemResolveOptions
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"ClientCompletionItemResolveOptions" ((Object -> Parser ClientCompletionItemResolveOptions)
 -> Value -> Parser ClientCompletionItemResolveOptions)
-> (Object -> Parser ClientCompletionItemResolveOptions)
-> Value
-> Parser ClientCompletionItemResolveOptions
forall a b. (a -> b) -> a -> b
$ \Object
arg -> [Text] -> ClientCompletionItemResolveOptions
ClientCompletionItemResolveOptions ([Text] -> ClientCompletionItemResolveOptions)
-> Parser [Text] -> Parser ClientCompletionItemResolveOptions
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"