{- 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.DocumentHighlightKind 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 Data.Set
import qualified Data.String
import qualified Language.LSP.Protocol.Types.Common
import qualified Language.LSP.Protocol.Types.LspEnum

{-|
A document highlight kind.
-}
data DocumentHighlightKind = 
    {-|
  A textual occurrence.
  -}
  DocumentHighlightKind_Text
  | {-|
  Read-access of a symbol, like reading a variable.
  -}
  DocumentHighlightKind_Read
  | {-|
  Write-access of a symbol, like writing to a variable.
  -}
  DocumentHighlightKind_Write
  deriving stock (Int -> DocumentHighlightKind -> ShowS
[DocumentHighlightKind] -> ShowS
DocumentHighlightKind -> String
(Int -> DocumentHighlightKind -> ShowS)
-> (DocumentHighlightKind -> String)
-> ([DocumentHighlightKind] -> ShowS)
-> Show DocumentHighlightKind
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DocumentHighlightKind -> ShowS
showsPrec :: Int -> DocumentHighlightKind -> ShowS
$cshow :: DocumentHighlightKind -> String
show :: DocumentHighlightKind -> String
$cshowList :: [DocumentHighlightKind] -> ShowS
showList :: [DocumentHighlightKind] -> ShowS
Show, DocumentHighlightKind -> DocumentHighlightKind -> Bool
(DocumentHighlightKind -> DocumentHighlightKind -> Bool)
-> (DocumentHighlightKind -> DocumentHighlightKind -> Bool)
-> Eq DocumentHighlightKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
== :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
$c/= :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
/= :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
Eq, Eq DocumentHighlightKind
Eq DocumentHighlightKind =>
(DocumentHighlightKind -> DocumentHighlightKind -> Ordering)
-> (DocumentHighlightKind -> DocumentHighlightKind -> Bool)
-> (DocumentHighlightKind -> DocumentHighlightKind -> Bool)
-> (DocumentHighlightKind -> DocumentHighlightKind -> Bool)
-> (DocumentHighlightKind -> DocumentHighlightKind -> Bool)
-> (DocumentHighlightKind
    -> DocumentHighlightKind -> DocumentHighlightKind)
-> (DocumentHighlightKind
    -> DocumentHighlightKind -> DocumentHighlightKind)
-> Ord DocumentHighlightKind
DocumentHighlightKind -> DocumentHighlightKind -> Bool
DocumentHighlightKind -> DocumentHighlightKind -> Ordering
DocumentHighlightKind
-> DocumentHighlightKind -> DocumentHighlightKind
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 :: DocumentHighlightKind -> DocumentHighlightKind -> Ordering
compare :: DocumentHighlightKind -> DocumentHighlightKind -> Ordering
$c< :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
< :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
$c<= :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
<= :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
$c> :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
> :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
$c>= :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
>= :: DocumentHighlightKind -> DocumentHighlightKind -> Bool
$cmax :: DocumentHighlightKind
-> DocumentHighlightKind -> DocumentHighlightKind
max :: DocumentHighlightKind
-> DocumentHighlightKind -> DocumentHighlightKind
$cmin :: DocumentHighlightKind
-> DocumentHighlightKind -> DocumentHighlightKind
min :: DocumentHighlightKind
-> DocumentHighlightKind -> DocumentHighlightKind
Ord, (forall x. DocumentHighlightKind -> Rep DocumentHighlightKind x)
-> (forall x. Rep DocumentHighlightKind x -> DocumentHighlightKind)
-> Generic DocumentHighlightKind
forall x. Rep DocumentHighlightKind x -> DocumentHighlightKind
forall x. DocumentHighlightKind -> Rep DocumentHighlightKind x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DocumentHighlightKind -> Rep DocumentHighlightKind x
from :: forall x. DocumentHighlightKind -> Rep DocumentHighlightKind x
$cto :: forall x. Rep DocumentHighlightKind x -> DocumentHighlightKind
to :: forall x. Rep DocumentHighlightKind x -> DocumentHighlightKind
Generic)
  deriving anyclass (DocumentHighlightKind -> ()
(DocumentHighlightKind -> ()) -> NFData DocumentHighlightKind
forall a. (a -> ()) -> NFData a
$crnf :: DocumentHighlightKind -> ()
rnf :: DocumentHighlightKind -> ()
NFData, Eq DocumentHighlightKind
Eq DocumentHighlightKind =>
(Int -> DocumentHighlightKind -> Int)
-> (DocumentHighlightKind -> Int) -> Hashable DocumentHighlightKind
Int -> DocumentHighlightKind -> Int
DocumentHighlightKind -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> DocumentHighlightKind -> Int
hashWithSalt :: Int -> DocumentHighlightKind -> Int
$chash :: DocumentHighlightKind -> Int
hash :: DocumentHighlightKind -> Int
Hashable)
  deriving ( [DocumentHighlightKind] -> Value
[DocumentHighlightKind] -> Encoding
DocumentHighlightKind -> Bool
DocumentHighlightKind -> Value
DocumentHighlightKind -> Encoding
(DocumentHighlightKind -> Value)
-> (DocumentHighlightKind -> Encoding)
-> ([DocumentHighlightKind] -> Value)
-> ([DocumentHighlightKind] -> Encoding)
-> (DocumentHighlightKind -> Bool)
-> ToJSON DocumentHighlightKind
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: DocumentHighlightKind -> Value
toJSON :: DocumentHighlightKind -> Value
$ctoEncoding :: DocumentHighlightKind -> Encoding
toEncoding :: DocumentHighlightKind -> Encoding
$ctoJSONList :: [DocumentHighlightKind] -> Value
toJSONList :: [DocumentHighlightKind] -> Value
$ctoEncodingList :: [DocumentHighlightKind] -> Encoding
toEncodingList :: [DocumentHighlightKind] -> Encoding
$comitField :: DocumentHighlightKind -> Bool
omitField :: DocumentHighlightKind -> Bool
Aeson.ToJSON
  , Maybe DocumentHighlightKind
Value -> Parser [DocumentHighlightKind]
Value -> Parser DocumentHighlightKind
(Value -> Parser DocumentHighlightKind)
-> (Value -> Parser [DocumentHighlightKind])
-> Maybe DocumentHighlightKind
-> FromJSON DocumentHighlightKind
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser DocumentHighlightKind
parseJSON :: Value -> Parser DocumentHighlightKind
$cparseJSONList :: Value -> Parser [DocumentHighlightKind]
parseJSONList :: Value -> Parser [DocumentHighlightKind]
$comittedField :: Maybe DocumentHighlightKind
omittedField :: Maybe DocumentHighlightKind
Aeson.FromJSON ) via (Language.LSP.Protocol.Types.LspEnum.AsLspEnum DocumentHighlightKind)
  deriving (forall ann. DocumentHighlightKind -> Doc ann)
-> (forall ann. [DocumentHighlightKind] -> Doc ann)
-> Pretty DocumentHighlightKind
forall ann. [DocumentHighlightKind] -> Doc ann
forall ann. DocumentHighlightKind -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. DocumentHighlightKind -> Doc ann
pretty :: forall ann. DocumentHighlightKind -> Doc ann
$cprettyList :: forall ann. [DocumentHighlightKind] -> Doc ann
prettyList :: forall ann. [DocumentHighlightKind] -> Doc ann
Pretty via (ViaJSON DocumentHighlightKind)

instance Language.LSP.Protocol.Types.LspEnum.LspEnum DocumentHighlightKind where
  knownValues :: Set DocumentHighlightKind
knownValues = [DocumentHighlightKind] -> Set DocumentHighlightKind
forall a. Ord a => [a] -> Set a
Data.Set.fromList [DocumentHighlightKind
DocumentHighlightKind_Text
    ,DocumentHighlightKind
DocumentHighlightKind_Read
    ,DocumentHighlightKind
DocumentHighlightKind_Write]
  type EnumBaseType DocumentHighlightKind = Language.LSP.Protocol.Types.Common.UInt
  toEnumBaseType :: DocumentHighlightKind -> EnumBaseType DocumentHighlightKind
toEnumBaseType DocumentHighlightKind
DocumentHighlightKind_Text = EnumBaseType DocumentHighlightKind
UInt
1
  toEnumBaseType DocumentHighlightKind
DocumentHighlightKind_Read = EnumBaseType DocumentHighlightKind
UInt
2
  toEnumBaseType DocumentHighlightKind
DocumentHighlightKind_Write = EnumBaseType DocumentHighlightKind
UInt
3
  fromEnumBaseType :: EnumBaseType DocumentHighlightKind -> Maybe DocumentHighlightKind
fromEnumBaseType EnumBaseType DocumentHighlightKind
1 = DocumentHighlightKind -> Maybe DocumentHighlightKind
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DocumentHighlightKind
DocumentHighlightKind_Text
  fromEnumBaseType EnumBaseType DocumentHighlightKind
2 = DocumentHighlightKind -> Maybe DocumentHighlightKind
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DocumentHighlightKind
DocumentHighlightKind_Read
  fromEnumBaseType EnumBaseType DocumentHighlightKind
3 = DocumentHighlightKind -> Maybe DocumentHighlightKind
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DocumentHighlightKind
DocumentHighlightKind_Write
  fromEnumBaseType EnumBaseType DocumentHighlightKind
_ = Maybe DocumentHighlightKind
forall a. Maybe a
Nothing