{- 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.InlayHintClientCapabilities 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 as Row
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

{-|
Inlay hint client capabilities.

@since 3.17.0
-}
data InlayHintClientCapabilities = InlayHintClientCapabilities 
  { {-|
  Whether inlay hints support dynamic registration.
  -}
  InlayHintClientCapabilities -> Maybe Bool
_dynamicRegistration :: (Maybe Bool)
  , {-|
  Indicates which properties a client can resolve lazily on an inlay
  hint.
  -}
  InlayHintClientCapabilities
-> Maybe (Rec (("properties" .== [Text]) .+ Empty))
_resolveSupport :: (Maybe (Row.Rec ("properties" Row..== [Data.Text.Text] Row..+ Row.Empty)))
  }
  deriving stock (Int -> InlayHintClientCapabilities -> ShowS
[InlayHintClientCapabilities] -> ShowS
InlayHintClientCapabilities -> String
(Int -> InlayHintClientCapabilities -> ShowS)
-> (InlayHintClientCapabilities -> String)
-> ([InlayHintClientCapabilities] -> ShowS)
-> Show InlayHintClientCapabilities
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InlayHintClientCapabilities -> ShowS
showsPrec :: Int -> InlayHintClientCapabilities -> ShowS
$cshow :: InlayHintClientCapabilities -> String
show :: InlayHintClientCapabilities -> String
$cshowList :: [InlayHintClientCapabilities] -> ShowS
showList :: [InlayHintClientCapabilities] -> ShowS
Show, InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
(InlayHintClientCapabilities
 -> InlayHintClientCapabilities -> Bool)
-> (InlayHintClientCapabilities
    -> InlayHintClientCapabilities -> Bool)
-> Eq InlayHintClientCapabilities
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
== :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
$c/= :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
/= :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
Eq, Eq InlayHintClientCapabilities
Eq InlayHintClientCapabilities =>
(InlayHintClientCapabilities
 -> InlayHintClientCapabilities -> Ordering)
-> (InlayHintClientCapabilities
    -> InlayHintClientCapabilities -> Bool)
-> (InlayHintClientCapabilities
    -> InlayHintClientCapabilities -> Bool)
-> (InlayHintClientCapabilities
    -> InlayHintClientCapabilities -> Bool)
-> (InlayHintClientCapabilities
    -> InlayHintClientCapabilities -> Bool)
-> (InlayHintClientCapabilities
    -> InlayHintClientCapabilities -> InlayHintClientCapabilities)
-> (InlayHintClientCapabilities
    -> InlayHintClientCapabilities -> InlayHintClientCapabilities)
-> Ord InlayHintClientCapabilities
InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
InlayHintClientCapabilities
-> InlayHintClientCapabilities -> Ordering
InlayHintClientCapabilities
-> InlayHintClientCapabilities -> InlayHintClientCapabilities
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 :: InlayHintClientCapabilities
-> InlayHintClientCapabilities -> Ordering
compare :: InlayHintClientCapabilities
-> InlayHintClientCapabilities -> Ordering
$c< :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
< :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
$c<= :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
<= :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
$c> :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
> :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
$c>= :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
>= :: InlayHintClientCapabilities -> InlayHintClientCapabilities -> Bool
$cmax :: InlayHintClientCapabilities
-> InlayHintClientCapabilities -> InlayHintClientCapabilities
max :: InlayHintClientCapabilities
-> InlayHintClientCapabilities -> InlayHintClientCapabilities
$cmin :: InlayHintClientCapabilities
-> InlayHintClientCapabilities -> InlayHintClientCapabilities
min :: InlayHintClientCapabilities
-> InlayHintClientCapabilities -> InlayHintClientCapabilities
Ord, (forall x.
 InlayHintClientCapabilities -> Rep InlayHintClientCapabilities x)
-> (forall x.
    Rep InlayHintClientCapabilities x -> InlayHintClientCapabilities)
-> Generic InlayHintClientCapabilities
forall x.
Rep InlayHintClientCapabilities x -> InlayHintClientCapabilities
forall x.
InlayHintClientCapabilities -> Rep InlayHintClientCapabilities x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
InlayHintClientCapabilities -> Rep InlayHintClientCapabilities x
from :: forall x.
InlayHintClientCapabilities -> Rep InlayHintClientCapabilities x
$cto :: forall x.
Rep InlayHintClientCapabilities x -> InlayHintClientCapabilities
to :: forall x.
Rep InlayHintClientCapabilities x -> InlayHintClientCapabilities
Generic)
  deriving anyclass (InlayHintClientCapabilities -> ()
(InlayHintClientCapabilities -> ())
-> NFData InlayHintClientCapabilities
forall a. (a -> ()) -> NFData a
$crnf :: InlayHintClientCapabilities -> ()
rnf :: InlayHintClientCapabilities -> ()
NFData, Eq InlayHintClientCapabilities
Eq InlayHintClientCapabilities =>
(Int -> InlayHintClientCapabilities -> Int)
-> (InlayHintClientCapabilities -> Int)
-> Hashable InlayHintClientCapabilities
Int -> InlayHintClientCapabilities -> Int
InlayHintClientCapabilities -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> InlayHintClientCapabilities -> Int
hashWithSalt :: Int -> InlayHintClientCapabilities -> Int
$chash :: InlayHintClientCapabilities -> Int
hash :: InlayHintClientCapabilities -> Int
Hashable)
  deriving (forall ann. InlayHintClientCapabilities -> Doc ann)
-> (forall ann. [InlayHintClientCapabilities] -> Doc ann)
-> Pretty InlayHintClientCapabilities
forall ann. [InlayHintClientCapabilities] -> Doc ann
forall ann. InlayHintClientCapabilities -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. InlayHintClientCapabilities -> Doc ann
pretty :: forall ann. InlayHintClientCapabilities -> Doc ann
$cprettyList :: forall ann. [InlayHintClientCapabilities] -> Doc ann
prettyList :: forall ann. [InlayHintClientCapabilities] -> Doc ann
Pretty via (ViaJSON InlayHintClientCapabilities)

instance Aeson.ToJSON InlayHintClientCapabilities where
  toJSON :: InlayHintClientCapabilities -> Value
toJSON (InlayHintClientCapabilities Maybe Bool
arg0 Maybe (Rec (("properties" .== [Text]) .+ Empty))
arg1) = [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
$  [String
"dynamicRegistration" String -> Maybe Bool -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe Bool
arg0
    ,String
"resolveSupport" String -> Maybe (Rec ('R '["properties" ':-> [Text]])) -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe (Rec (("properties" .== [Text]) .+ Empty))
Maybe (Rec ('R '["properties" ':-> [Text]]))
arg1]

instance Aeson.FromJSON InlayHintClientCapabilities where
  parseJSON :: Value -> Parser InlayHintClientCapabilities
parseJSON = String
-> (Object -> Parser InlayHintClientCapabilities)
-> Value
-> Parser InlayHintClientCapabilities
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"InlayHintClientCapabilities" ((Object -> Parser InlayHintClientCapabilities)
 -> Value -> Parser InlayHintClientCapabilities)
-> (Object -> Parser InlayHintClientCapabilities)
-> Value
-> Parser InlayHintClientCapabilities
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Maybe Bool
-> Maybe (Rec (("properties" .== [Text]) .+ Empty))
-> InlayHintClientCapabilities
Maybe Bool
-> Maybe (Rec ('R '["properties" ':-> [Text]]))
-> InlayHintClientCapabilities
InlayHintClientCapabilities (Maybe Bool
 -> Maybe (Rec ('R '["properties" ':-> [Text]]))
 -> InlayHintClientCapabilities)
-> Parser (Maybe Bool)
-> Parser
     (Maybe (Rec ('R '["properties" ':-> [Text]]))
      -> InlayHintClientCapabilities)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser (Maybe Bool)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"dynamicRegistration" Parser
  (Maybe (Rec ('R '["properties" ':-> [Text]]))
   -> InlayHintClientCapabilities)
-> Parser (Maybe (Rec ('R '["properties" ':-> [Text]])))
-> Parser InlayHintClientCapabilities
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
arg Object
-> Key -> Parser (Maybe (Rec ('R '["properties" ':-> [Text]])))
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"resolveSupport"