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

{-|
Client capabilities for a `WorkspaceSymbolRequest`.
-}
data WorkspaceSymbolClientCapabilities = WorkspaceSymbolClientCapabilities 
  { {-|
  Symbol request supports dynamic registration.
  -}
  WorkspaceSymbolClientCapabilities -> Maybe Bool
_dynamicRegistration :: (Maybe Bool)
  , {-|
  Specific capabilities for the `SymbolKind` in the `workspace/symbol` request.
  -}
  WorkspaceSymbolClientCapabilities
-> Maybe (Rec (("valueSet" .== Maybe [SymbolKind]) .+ Empty))
_symbolKind :: (Maybe (Row.Rec ("valueSet" Row..== (Maybe [Language.LSP.Protocol.Internal.Types.SymbolKind.SymbolKind]) Row..+ Row.Empty)))
  , {-|
  The client supports tags on `SymbolInformation`.
  Clients supporting tags have to handle unknown tags gracefully.

  @since 3.16.0
  -}
  WorkspaceSymbolClientCapabilities
-> Maybe (Rec (("valueSet" .== [SymbolTag]) .+ Empty))
_tagSupport :: (Maybe (Row.Rec ("valueSet" Row..== [Language.LSP.Protocol.Internal.Types.SymbolTag.SymbolTag] Row..+ Row.Empty)))
  , {-|
  The client support partial workspace symbols. The client will send the
  request `workspaceSymbol/resolve` to the server to resolve additional
  properties.

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

instance Aeson.ToJSON WorkspaceSymbolClientCapabilities where
  toJSON :: WorkspaceSymbolClientCapabilities -> Value
toJSON (WorkspaceSymbolClientCapabilities Maybe Bool
arg0 Maybe (Rec (("valueSet" .== Maybe [SymbolKind]) .+ Empty))
arg1 Maybe (Rec (("valueSet" .== [SymbolTag]) .+ Empty))
arg2 Maybe (Rec (("properties" .== [Text]) .+ Empty))
arg3) = [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
"symbolKind" String
-> Maybe (Rec ('R '["valueSet" ':-> Maybe [SymbolKind]])) -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe (Rec (("valueSet" .== Maybe [SymbolKind]) .+ Empty))
Maybe (Rec ('R '["valueSet" ':-> Maybe [SymbolKind]]))
arg1
    ,String
"tagSupport" String -> Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]])) -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe (Rec (("valueSet" .== [SymbolTag]) .+ Empty))
Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]]))
arg2
    ,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]]))
arg3]

instance Aeson.FromJSON WorkspaceSymbolClientCapabilities where
  parseJSON :: Value -> Parser WorkspaceSymbolClientCapabilities
parseJSON = String
-> (Object -> Parser WorkspaceSymbolClientCapabilities)
-> Value
-> Parser WorkspaceSymbolClientCapabilities
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"WorkspaceSymbolClientCapabilities" ((Object -> Parser WorkspaceSymbolClientCapabilities)
 -> Value -> Parser WorkspaceSymbolClientCapabilities)
-> (Object -> Parser WorkspaceSymbolClientCapabilities)
-> Value
-> Parser WorkspaceSymbolClientCapabilities
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Maybe Bool
-> Maybe (Rec (("valueSet" .== Maybe [SymbolKind]) .+ Empty))
-> Maybe (Rec (("valueSet" .== [SymbolTag]) .+ Empty))
-> Maybe (Rec (("properties" .== [Text]) .+ Empty))
-> WorkspaceSymbolClientCapabilities
Maybe Bool
-> Maybe (Rec ('R '["valueSet" ':-> Maybe [SymbolKind]]))
-> Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]]))
-> Maybe (Rec ('R '["properties" ':-> [Text]]))
-> WorkspaceSymbolClientCapabilities
WorkspaceSymbolClientCapabilities (Maybe Bool
 -> Maybe (Rec ('R '["valueSet" ':-> Maybe [SymbolKind]]))
 -> Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]]))
 -> Maybe (Rec ('R '["properties" ':-> [Text]]))
 -> WorkspaceSymbolClientCapabilities)
-> Parser (Maybe Bool)
-> Parser
     (Maybe (Rec ('R '["valueSet" ':-> Maybe [SymbolKind]]))
      -> Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]]))
      -> Maybe (Rec ('R '["properties" ':-> [Text]]))
      -> WorkspaceSymbolClientCapabilities)
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 '["valueSet" ':-> Maybe [SymbolKind]]))
   -> Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]]))
   -> Maybe (Rec ('R '["properties" ':-> [Text]]))
   -> WorkspaceSymbolClientCapabilities)
-> Parser (Maybe (Rec ('R '["valueSet" ':-> Maybe [SymbolKind]])))
-> Parser
     (Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]]))
      -> Maybe (Rec ('R '["properties" ':-> [Text]]))
      -> WorkspaceSymbolClientCapabilities)
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 '["valueSet" ':-> Maybe [SymbolKind]])))
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"symbolKind" Parser
  (Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]]))
   -> Maybe (Rec ('R '["properties" ':-> [Text]]))
   -> WorkspaceSymbolClientCapabilities)
-> Parser (Maybe (Rec ('R '["valueSet" ':-> [SymbolTag]])))
-> Parser
     (Maybe (Rec ('R '["properties" ':-> [Text]]))
      -> WorkspaceSymbolClientCapabilities)
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 '["valueSet" ':-> [SymbolTag]])))
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"tagSupport" Parser
  (Maybe (Rec ('R '["properties" ':-> [Text]]))
   -> WorkspaceSymbolClientCapabilities)
-> Parser (Maybe (Rec ('R '["properties" ':-> [Text]])))
-> Parser WorkspaceSymbolClientCapabilities
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"