{- 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.InlineValueWorkspaceClientCapabilities 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.Types.Common

{-|
Client workspace capabilities specific to inline values.

@since 3.17.0
-}
data InlineValueWorkspaceClientCapabilities = InlineValueWorkspaceClientCapabilities 
  { {-|
  Whether the client implementation supports a refresh request sent from the
  server to the client.

  Note that this event is global and will force the client to refresh all
  inline values currently shown. It should be used with absolute care and is
  useful for situation where a server for example detects a project wide
  change that requires such a calculation.
  -}
  InlineValueWorkspaceClientCapabilities -> Maybe Bool
_refreshSupport :: (Maybe Bool)
  }
  deriving stock (Int -> InlineValueWorkspaceClientCapabilities -> ShowS
[InlineValueWorkspaceClientCapabilities] -> ShowS
InlineValueWorkspaceClientCapabilities -> String
(Int -> InlineValueWorkspaceClientCapabilities -> ShowS)
-> (InlineValueWorkspaceClientCapabilities -> String)
-> ([InlineValueWorkspaceClientCapabilities] -> ShowS)
-> Show InlineValueWorkspaceClientCapabilities
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InlineValueWorkspaceClientCapabilities -> ShowS
showsPrec :: Int -> InlineValueWorkspaceClientCapabilities -> ShowS
$cshow :: InlineValueWorkspaceClientCapabilities -> String
show :: InlineValueWorkspaceClientCapabilities -> String
$cshowList :: [InlineValueWorkspaceClientCapabilities] -> ShowS
showList :: [InlineValueWorkspaceClientCapabilities] -> ShowS
Show, InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
(InlineValueWorkspaceClientCapabilities
 -> InlineValueWorkspaceClientCapabilities -> Bool)
-> (InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities -> Bool)
-> Eq InlineValueWorkspaceClientCapabilities
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
== :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
$c/= :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
/= :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
Eq, Eq InlineValueWorkspaceClientCapabilities
Eq InlineValueWorkspaceClientCapabilities =>
(InlineValueWorkspaceClientCapabilities
 -> InlineValueWorkspaceClientCapabilities -> Ordering)
-> (InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities -> Bool)
-> (InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities -> Bool)
-> (InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities -> Bool)
-> (InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities -> Bool)
-> (InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities)
-> (InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities
    -> InlineValueWorkspaceClientCapabilities)
-> Ord InlineValueWorkspaceClientCapabilities
InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Ordering
InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
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 :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Ordering
compare :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Ordering
$c< :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
< :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
$c<= :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
<= :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
$c> :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
> :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
$c>= :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
>= :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities -> Bool
$cmax :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
max :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
$cmin :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
min :: InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
-> InlineValueWorkspaceClientCapabilities
Ord, (forall x.
 InlineValueWorkspaceClientCapabilities
 -> Rep InlineValueWorkspaceClientCapabilities x)
-> (forall x.
    Rep InlineValueWorkspaceClientCapabilities x
    -> InlineValueWorkspaceClientCapabilities)
-> Generic InlineValueWorkspaceClientCapabilities
forall x.
Rep InlineValueWorkspaceClientCapabilities x
-> InlineValueWorkspaceClientCapabilities
forall x.
InlineValueWorkspaceClientCapabilities
-> Rep InlineValueWorkspaceClientCapabilities x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
InlineValueWorkspaceClientCapabilities
-> Rep InlineValueWorkspaceClientCapabilities x
from :: forall x.
InlineValueWorkspaceClientCapabilities
-> Rep InlineValueWorkspaceClientCapabilities x
$cto :: forall x.
Rep InlineValueWorkspaceClientCapabilities x
-> InlineValueWorkspaceClientCapabilities
to :: forall x.
Rep InlineValueWorkspaceClientCapabilities x
-> InlineValueWorkspaceClientCapabilities
Generic)
  deriving anyclass (InlineValueWorkspaceClientCapabilities -> ()
(InlineValueWorkspaceClientCapabilities -> ())
-> NFData InlineValueWorkspaceClientCapabilities
forall a. (a -> ()) -> NFData a
$crnf :: InlineValueWorkspaceClientCapabilities -> ()
rnf :: InlineValueWorkspaceClientCapabilities -> ()
NFData, Eq InlineValueWorkspaceClientCapabilities
Eq InlineValueWorkspaceClientCapabilities =>
(Int -> InlineValueWorkspaceClientCapabilities -> Int)
-> (InlineValueWorkspaceClientCapabilities -> Int)
-> Hashable InlineValueWorkspaceClientCapabilities
Int -> InlineValueWorkspaceClientCapabilities -> Int
InlineValueWorkspaceClientCapabilities -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> InlineValueWorkspaceClientCapabilities -> Int
hashWithSalt :: Int -> InlineValueWorkspaceClientCapabilities -> Int
$chash :: InlineValueWorkspaceClientCapabilities -> Int
hash :: InlineValueWorkspaceClientCapabilities -> Int
Hashable)
  deriving (forall ann. InlineValueWorkspaceClientCapabilities -> Doc ann)
-> (forall ann.
    [InlineValueWorkspaceClientCapabilities] -> Doc ann)
-> Pretty InlineValueWorkspaceClientCapabilities
forall ann. [InlineValueWorkspaceClientCapabilities] -> Doc ann
forall ann. InlineValueWorkspaceClientCapabilities -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. InlineValueWorkspaceClientCapabilities -> Doc ann
pretty :: forall ann. InlineValueWorkspaceClientCapabilities -> Doc ann
$cprettyList :: forall ann. [InlineValueWorkspaceClientCapabilities] -> Doc ann
prettyList :: forall ann. [InlineValueWorkspaceClientCapabilities] -> Doc ann
Pretty via (ViaJSON InlineValueWorkspaceClientCapabilities)

instance Aeson.ToJSON InlineValueWorkspaceClientCapabilities where
  toJSON :: InlineValueWorkspaceClientCapabilities -> Value
toJSON (InlineValueWorkspaceClientCapabilities Maybe Bool
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
$  [String
"refreshSupport" 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]

instance Aeson.FromJSON InlineValueWorkspaceClientCapabilities where
  parseJSON :: Value -> Parser InlineValueWorkspaceClientCapabilities
parseJSON = String
-> (Object -> Parser InlineValueWorkspaceClientCapabilities)
-> Value
-> Parser InlineValueWorkspaceClientCapabilities
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"InlineValueWorkspaceClientCapabilities" ((Object -> Parser InlineValueWorkspaceClientCapabilities)
 -> Value -> Parser InlineValueWorkspaceClientCapabilities)
-> (Object -> Parser InlineValueWorkspaceClientCapabilities)
-> Value
-> Parser InlineValueWorkspaceClientCapabilities
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Maybe Bool -> InlineValueWorkspaceClientCapabilities
InlineValueWorkspaceClientCapabilities (Maybe Bool -> InlineValueWorkspaceClientCapabilities)
-> Parser (Maybe Bool)
-> Parser InlineValueWorkspaceClientCapabilities
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
"refreshSupport"