{- 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.RenameOptions 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

{-|
Provider options for a `RenameRequest`.
-}
data RenameOptions = RenameOptions 
  { {-|

  -}
  RenameOptions -> Maybe Bool
_workDoneProgress :: (Maybe Bool)
  , {-|
  Renames should be checked and tested before being executed.

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

instance Aeson.ToJSON RenameOptions where
  toJSON :: RenameOptions -> Value
toJSON (RenameOptions Maybe Bool
arg0 Maybe Bool
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
"workDoneProgress" 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
"prepareProvider" String -> Maybe Bool -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe Bool
arg1]

instance Aeson.FromJSON RenameOptions where
  parseJSON :: Value -> Parser RenameOptions
parseJSON = String
-> (Object -> Parser RenameOptions)
-> Value
-> Parser RenameOptions
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"RenameOptions" ((Object -> Parser RenameOptions) -> Value -> Parser RenameOptions)
-> (Object -> Parser RenameOptions)
-> Value
-> Parser RenameOptions
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Maybe Bool -> Maybe Bool -> RenameOptions
RenameOptions (Maybe Bool -> Maybe Bool -> RenameOptions)
-> Parser (Maybe Bool) -> Parser (Maybe Bool -> RenameOptions)
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
"workDoneProgress" Parser (Maybe Bool -> RenameOptions)
-> Parser (Maybe Bool) -> Parser RenameOptions
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 Bool)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"prepareProvider"