{- 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.ReferenceParams 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.Internal.Types.Position
import qualified Language.LSP.Protocol.Internal.Types.ProgressToken
import qualified Language.LSP.Protocol.Internal.Types.ReferenceContext
import qualified Language.LSP.Protocol.Internal.Types.TextDocumentIdentifier
import qualified Language.LSP.Protocol.Types.Common

{-|
Parameters for a `ReferencesRequest`.
-}
data ReferenceParams = ReferenceParams 
  { {-|
  The text document.
  -}
  ReferenceParams -> TextDocumentIdentifier
_textDocument :: Language.LSP.Protocol.Internal.Types.TextDocumentIdentifier.TextDocumentIdentifier
  , {-|
  The position inside the text document.
  -}
  ReferenceParams -> Position
_position :: Language.LSP.Protocol.Internal.Types.Position.Position
  , {-|
  An optional token that a server can use to report work done progress.
  -}
  ReferenceParams -> Maybe ProgressToken
_workDoneToken :: (Maybe Language.LSP.Protocol.Internal.Types.ProgressToken.ProgressToken)
  , {-|
  An optional token that a server can use to report partial results (e.g. streaming) to
  the client.
  -}
  ReferenceParams -> Maybe ProgressToken
_partialResultToken :: (Maybe Language.LSP.Protocol.Internal.Types.ProgressToken.ProgressToken)
  , {-|

  -}
  ReferenceParams -> ReferenceContext
_context :: Language.LSP.Protocol.Internal.Types.ReferenceContext.ReferenceContext
  }
  deriving stock (Int -> ReferenceParams -> ShowS
[ReferenceParams] -> ShowS
ReferenceParams -> String
(Int -> ReferenceParams -> ShowS)
-> (ReferenceParams -> String)
-> ([ReferenceParams] -> ShowS)
-> Show ReferenceParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ReferenceParams -> ShowS
showsPrec :: Int -> ReferenceParams -> ShowS
$cshow :: ReferenceParams -> String
show :: ReferenceParams -> String
$cshowList :: [ReferenceParams] -> ShowS
showList :: [ReferenceParams] -> ShowS
Show, ReferenceParams -> ReferenceParams -> Bool
(ReferenceParams -> ReferenceParams -> Bool)
-> (ReferenceParams -> ReferenceParams -> Bool)
-> Eq ReferenceParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ReferenceParams -> ReferenceParams -> Bool
== :: ReferenceParams -> ReferenceParams -> Bool
$c/= :: ReferenceParams -> ReferenceParams -> Bool
/= :: ReferenceParams -> ReferenceParams -> Bool
Eq, Eq ReferenceParams
Eq ReferenceParams =>
(ReferenceParams -> ReferenceParams -> Ordering)
-> (ReferenceParams -> ReferenceParams -> Bool)
-> (ReferenceParams -> ReferenceParams -> Bool)
-> (ReferenceParams -> ReferenceParams -> Bool)
-> (ReferenceParams -> ReferenceParams -> Bool)
-> (ReferenceParams -> ReferenceParams -> ReferenceParams)
-> (ReferenceParams -> ReferenceParams -> ReferenceParams)
-> Ord ReferenceParams
ReferenceParams -> ReferenceParams -> Bool
ReferenceParams -> ReferenceParams -> Ordering
ReferenceParams -> ReferenceParams -> ReferenceParams
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 :: ReferenceParams -> ReferenceParams -> Ordering
compare :: ReferenceParams -> ReferenceParams -> Ordering
$c< :: ReferenceParams -> ReferenceParams -> Bool
< :: ReferenceParams -> ReferenceParams -> Bool
$c<= :: ReferenceParams -> ReferenceParams -> Bool
<= :: ReferenceParams -> ReferenceParams -> Bool
$c> :: ReferenceParams -> ReferenceParams -> Bool
> :: ReferenceParams -> ReferenceParams -> Bool
$c>= :: ReferenceParams -> ReferenceParams -> Bool
>= :: ReferenceParams -> ReferenceParams -> Bool
$cmax :: ReferenceParams -> ReferenceParams -> ReferenceParams
max :: ReferenceParams -> ReferenceParams -> ReferenceParams
$cmin :: ReferenceParams -> ReferenceParams -> ReferenceParams
min :: ReferenceParams -> ReferenceParams -> ReferenceParams
Ord, (forall x. ReferenceParams -> Rep ReferenceParams x)
-> (forall x. Rep ReferenceParams x -> ReferenceParams)
-> Generic ReferenceParams
forall x. Rep ReferenceParams x -> ReferenceParams
forall x. ReferenceParams -> Rep ReferenceParams x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ReferenceParams -> Rep ReferenceParams x
from :: forall x. ReferenceParams -> Rep ReferenceParams x
$cto :: forall x. Rep ReferenceParams x -> ReferenceParams
to :: forall x. Rep ReferenceParams x -> ReferenceParams
Generic)
  deriving anyclass (ReferenceParams -> ()
(ReferenceParams -> ()) -> NFData ReferenceParams
forall a. (a -> ()) -> NFData a
$crnf :: ReferenceParams -> ()
rnf :: ReferenceParams -> ()
NFData, Eq ReferenceParams
Eq ReferenceParams =>
(Int -> ReferenceParams -> Int)
-> (ReferenceParams -> Int) -> Hashable ReferenceParams
Int -> ReferenceParams -> Int
ReferenceParams -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> ReferenceParams -> Int
hashWithSalt :: Int -> ReferenceParams -> Int
$chash :: ReferenceParams -> Int
hash :: ReferenceParams -> Int
Hashable)
  deriving (forall ann. ReferenceParams -> Doc ann)
-> (forall ann. [ReferenceParams] -> Doc ann)
-> Pretty ReferenceParams
forall ann. [ReferenceParams] -> Doc ann
forall ann. ReferenceParams -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. ReferenceParams -> Doc ann
pretty :: forall ann. ReferenceParams -> Doc ann
$cprettyList :: forall ann. [ReferenceParams] -> Doc ann
prettyList :: forall ann. [ReferenceParams] -> Doc ann
Pretty via (ViaJSON ReferenceParams)

instance Aeson.ToJSON ReferenceParams where
  toJSON :: ReferenceParams -> Value
toJSON (ReferenceParams TextDocumentIdentifier
arg0 Position
arg1 Maybe ProgressToken
arg2 Maybe ProgressToken
arg3 ReferenceContext
arg4) = [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
"textDocument" Key -> TextDocumentIdentifier -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= TextDocumentIdentifier
arg0]
    ,[Key
"position" Key -> Position -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= Position
arg1]
    ,String
"workDoneToken" String -> Maybe ProgressToken -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe ProgressToken
arg2
    ,String
"partialResultToken" String -> Maybe ProgressToken -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe ProgressToken
arg3
    ,[Key
"context" Key -> ReferenceContext -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= ReferenceContext
arg4]]

instance Aeson.FromJSON ReferenceParams where
  parseJSON :: Value -> Parser ReferenceParams
parseJSON = String
-> (Object -> Parser ReferenceParams)
-> Value
-> Parser ReferenceParams
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"ReferenceParams" ((Object -> Parser ReferenceParams)
 -> Value -> Parser ReferenceParams)
-> (Object -> Parser ReferenceParams)
-> Value
-> Parser ReferenceParams
forall a b. (a -> b) -> a -> b
$ \Object
arg -> TextDocumentIdentifier
-> Position
-> Maybe ProgressToken
-> Maybe ProgressToken
-> ReferenceContext
-> ReferenceParams
ReferenceParams (TextDocumentIdentifier
 -> Position
 -> Maybe ProgressToken
 -> Maybe ProgressToken
 -> ReferenceContext
 -> ReferenceParams)
-> Parser TextDocumentIdentifier
-> Parser
     (Position
      -> Maybe ProgressToken
      -> Maybe ProgressToken
      -> ReferenceContext
      -> ReferenceParams)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser TextDocumentIdentifier
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"textDocument" Parser
  (Position
   -> Maybe ProgressToken
   -> Maybe ProgressToken
   -> ReferenceContext
   -> ReferenceParams)
-> Parser Position
-> Parser
     (Maybe ProgressToken
      -> Maybe ProgressToken -> ReferenceContext -> ReferenceParams)
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 Position
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"position" Parser
  (Maybe ProgressToken
   -> Maybe ProgressToken -> ReferenceContext -> ReferenceParams)
-> Parser (Maybe ProgressToken)
-> Parser
     (Maybe ProgressToken -> ReferenceContext -> ReferenceParams)
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 ProgressToken)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"workDoneToken" Parser (Maybe ProgressToken -> ReferenceContext -> ReferenceParams)
-> Parser (Maybe ProgressToken)
-> Parser (ReferenceContext -> ReferenceParams)
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 ProgressToken)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"partialResultToken" Parser (ReferenceContext -> ReferenceParams)
-> Parser ReferenceContext -> Parser ReferenceParams
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 ReferenceContext
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"context"