{- 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.SemanticTokenTypes 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 Data.Text
import qualified Language.LSP.Protocol.Types.LspEnum

{-|
A set of predefined token types. This set is not fixed
an clients can specify additional token types via the
corresponding client capabilities.

@since 3.16.0
-}
data SemanticTokenTypes = 
    {-|

  -}
  SemanticTokenTypes_Namespace
  | {-|
  Represents a generic type. Acts as a fallback for types which can't be mapped to
  a specific type like class or enum.
  -}
  SemanticTokenTypes_Type
  | {-|

  -}
  SemanticTokenTypes_Class
  | {-|

  -}
  SemanticTokenTypes_Enum
  | {-|

  -}
  SemanticTokenTypes_Interface
  | {-|

  -}
  SemanticTokenTypes_Struct
  | {-|

  -}
  SemanticTokenTypes_TypeParameter
  | {-|

  -}
  SemanticTokenTypes_Parameter
  | {-|

  -}
  SemanticTokenTypes_Variable
  | {-|

  -}
  SemanticTokenTypes_Property
  | {-|

  -}
  SemanticTokenTypes_EnumMember
  | {-|

  -}
  SemanticTokenTypes_Event
  | {-|

  -}
  SemanticTokenTypes_Function
  | {-|

  -}
  SemanticTokenTypes_Method
  | {-|

  -}
  SemanticTokenTypes_Macro
  | {-|

  -}
  SemanticTokenTypes_Keyword
  | {-|

  -}
  SemanticTokenTypes_Modifier
  | {-|

  -}
  SemanticTokenTypes_Comment
  | {-|

  -}
  SemanticTokenTypes_String
  | {-|

  -}
  SemanticTokenTypes_Number
  | {-|

  -}
  SemanticTokenTypes_Regexp
  | {-|

  -}
  SemanticTokenTypes_Operator
  | {-|
  @since 3.17.0
  -}
  SemanticTokenTypes_Decorator
  | SemanticTokenTypes_Custom Data.Text.Text
  deriving stock (Int -> SemanticTokenTypes -> ShowS
[SemanticTokenTypes] -> ShowS
SemanticTokenTypes -> String
(Int -> SemanticTokenTypes -> ShowS)
-> (SemanticTokenTypes -> String)
-> ([SemanticTokenTypes] -> ShowS)
-> Show SemanticTokenTypes
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SemanticTokenTypes -> ShowS
showsPrec :: Int -> SemanticTokenTypes -> ShowS
$cshow :: SemanticTokenTypes -> String
show :: SemanticTokenTypes -> String
$cshowList :: [SemanticTokenTypes] -> ShowS
showList :: [SemanticTokenTypes] -> ShowS
Show, SemanticTokenTypes -> SemanticTokenTypes -> Bool
(SemanticTokenTypes -> SemanticTokenTypes -> Bool)
-> (SemanticTokenTypes -> SemanticTokenTypes -> Bool)
-> Eq SemanticTokenTypes
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
== :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
$c/= :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
/= :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
Eq, Eq SemanticTokenTypes
Eq SemanticTokenTypes =>
(SemanticTokenTypes -> SemanticTokenTypes -> Ordering)
-> (SemanticTokenTypes -> SemanticTokenTypes -> Bool)
-> (SemanticTokenTypes -> SemanticTokenTypes -> Bool)
-> (SemanticTokenTypes -> SemanticTokenTypes -> Bool)
-> (SemanticTokenTypes -> SemanticTokenTypes -> Bool)
-> (SemanticTokenTypes -> SemanticTokenTypes -> SemanticTokenTypes)
-> (SemanticTokenTypes -> SemanticTokenTypes -> SemanticTokenTypes)
-> Ord SemanticTokenTypes
SemanticTokenTypes -> SemanticTokenTypes -> Bool
SemanticTokenTypes -> SemanticTokenTypes -> Ordering
SemanticTokenTypes -> SemanticTokenTypes -> SemanticTokenTypes
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 :: SemanticTokenTypes -> SemanticTokenTypes -> Ordering
compare :: SemanticTokenTypes -> SemanticTokenTypes -> Ordering
$c< :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
< :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
$c<= :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
<= :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
$c> :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
> :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
$c>= :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
>= :: SemanticTokenTypes -> SemanticTokenTypes -> Bool
$cmax :: SemanticTokenTypes -> SemanticTokenTypes -> SemanticTokenTypes
max :: SemanticTokenTypes -> SemanticTokenTypes -> SemanticTokenTypes
$cmin :: SemanticTokenTypes -> SemanticTokenTypes -> SemanticTokenTypes
min :: SemanticTokenTypes -> SemanticTokenTypes -> SemanticTokenTypes
Ord, (forall x. SemanticTokenTypes -> Rep SemanticTokenTypes x)
-> (forall x. Rep SemanticTokenTypes x -> SemanticTokenTypes)
-> Generic SemanticTokenTypes
forall x. Rep SemanticTokenTypes x -> SemanticTokenTypes
forall x. SemanticTokenTypes -> Rep SemanticTokenTypes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SemanticTokenTypes -> Rep SemanticTokenTypes x
from :: forall x. SemanticTokenTypes -> Rep SemanticTokenTypes x
$cto :: forall x. Rep SemanticTokenTypes x -> SemanticTokenTypes
to :: forall x. Rep SemanticTokenTypes x -> SemanticTokenTypes
Generic)
  deriving anyclass (SemanticTokenTypes -> ()
(SemanticTokenTypes -> ()) -> NFData SemanticTokenTypes
forall a. (a -> ()) -> NFData a
$crnf :: SemanticTokenTypes -> ()
rnf :: SemanticTokenTypes -> ()
NFData, Eq SemanticTokenTypes
Eq SemanticTokenTypes =>
(Int -> SemanticTokenTypes -> Int)
-> (SemanticTokenTypes -> Int) -> Hashable SemanticTokenTypes
Int -> SemanticTokenTypes -> Int
SemanticTokenTypes -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> SemanticTokenTypes -> Int
hashWithSalt :: Int -> SemanticTokenTypes -> Int
$chash :: SemanticTokenTypes -> Int
hash :: SemanticTokenTypes -> Int
Hashable)
  deriving ( [SemanticTokenTypes] -> Value
[SemanticTokenTypes] -> Encoding
SemanticTokenTypes -> Bool
SemanticTokenTypes -> Value
SemanticTokenTypes -> Encoding
(SemanticTokenTypes -> Value)
-> (SemanticTokenTypes -> Encoding)
-> ([SemanticTokenTypes] -> Value)
-> ([SemanticTokenTypes] -> Encoding)
-> (SemanticTokenTypes -> Bool)
-> ToJSON SemanticTokenTypes
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: SemanticTokenTypes -> Value
toJSON :: SemanticTokenTypes -> Value
$ctoEncoding :: SemanticTokenTypes -> Encoding
toEncoding :: SemanticTokenTypes -> Encoding
$ctoJSONList :: [SemanticTokenTypes] -> Value
toJSONList :: [SemanticTokenTypes] -> Value
$ctoEncodingList :: [SemanticTokenTypes] -> Encoding
toEncodingList :: [SemanticTokenTypes] -> Encoding
$comitField :: SemanticTokenTypes -> Bool
omitField :: SemanticTokenTypes -> Bool
Aeson.ToJSON
  , Maybe SemanticTokenTypes
Value -> Parser [SemanticTokenTypes]
Value -> Parser SemanticTokenTypes
(Value -> Parser SemanticTokenTypes)
-> (Value -> Parser [SemanticTokenTypes])
-> Maybe SemanticTokenTypes
-> FromJSON SemanticTokenTypes
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser SemanticTokenTypes
parseJSON :: Value -> Parser SemanticTokenTypes
$cparseJSONList :: Value -> Parser [SemanticTokenTypes]
parseJSONList :: Value -> Parser [SemanticTokenTypes]
$comittedField :: Maybe SemanticTokenTypes
omittedField :: Maybe SemanticTokenTypes
Aeson.FromJSON
  , String -> SemanticTokenTypes
(String -> SemanticTokenTypes) -> IsString SemanticTokenTypes
forall a. (String -> a) -> IsString a
$cfromString :: String -> SemanticTokenTypes
fromString :: String -> SemanticTokenTypes
Data.String.IsString ) via (Language.LSP.Protocol.Types.LspEnum.AsLspEnum SemanticTokenTypes)
  deriving (forall ann. SemanticTokenTypes -> Doc ann)
-> (forall ann. [SemanticTokenTypes] -> Doc ann)
-> Pretty SemanticTokenTypes
forall ann. [SemanticTokenTypes] -> Doc ann
forall ann. SemanticTokenTypes -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. SemanticTokenTypes -> Doc ann
pretty :: forall ann. SemanticTokenTypes -> Doc ann
$cprettyList :: forall ann. [SemanticTokenTypes] -> Doc ann
prettyList :: forall ann. [SemanticTokenTypes] -> Doc ann
Pretty via (ViaJSON SemanticTokenTypes)

instance Language.LSP.Protocol.Types.LspEnum.LspEnum SemanticTokenTypes where
  knownValues :: Set SemanticTokenTypes
knownValues = [SemanticTokenTypes] -> Set SemanticTokenTypes
forall a. Ord a => [a] -> Set a
Data.Set.fromList [SemanticTokenTypes
SemanticTokenTypes_Namespace
    ,SemanticTokenTypes
SemanticTokenTypes_Type
    ,SemanticTokenTypes
SemanticTokenTypes_Class
    ,SemanticTokenTypes
SemanticTokenTypes_Enum
    ,SemanticTokenTypes
SemanticTokenTypes_Interface
    ,SemanticTokenTypes
SemanticTokenTypes_Struct
    ,SemanticTokenTypes
SemanticTokenTypes_TypeParameter
    ,SemanticTokenTypes
SemanticTokenTypes_Parameter
    ,SemanticTokenTypes
SemanticTokenTypes_Variable
    ,SemanticTokenTypes
SemanticTokenTypes_Property
    ,SemanticTokenTypes
SemanticTokenTypes_EnumMember
    ,SemanticTokenTypes
SemanticTokenTypes_Event
    ,SemanticTokenTypes
SemanticTokenTypes_Function
    ,SemanticTokenTypes
SemanticTokenTypes_Method
    ,SemanticTokenTypes
SemanticTokenTypes_Macro
    ,SemanticTokenTypes
SemanticTokenTypes_Keyword
    ,SemanticTokenTypes
SemanticTokenTypes_Modifier
    ,SemanticTokenTypes
SemanticTokenTypes_Comment
    ,SemanticTokenTypes
SemanticTokenTypes_String
    ,SemanticTokenTypes
SemanticTokenTypes_Number
    ,SemanticTokenTypes
SemanticTokenTypes_Regexp
    ,SemanticTokenTypes
SemanticTokenTypes_Operator
    ,SemanticTokenTypes
SemanticTokenTypes_Decorator]
  type EnumBaseType SemanticTokenTypes = Data.Text.Text
  toEnumBaseType :: SemanticTokenTypes -> EnumBaseType SemanticTokenTypes
toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Namespace = Text
EnumBaseType SemanticTokenTypes
"namespace"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Type = Text
EnumBaseType SemanticTokenTypes
"type"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Class = Text
EnumBaseType SemanticTokenTypes
"class"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Enum = Text
EnumBaseType SemanticTokenTypes
"enum"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Interface = Text
EnumBaseType SemanticTokenTypes
"interface"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Struct = Text
EnumBaseType SemanticTokenTypes
"struct"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_TypeParameter = Text
EnumBaseType SemanticTokenTypes
"typeParameter"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Parameter = Text
EnumBaseType SemanticTokenTypes
"parameter"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Variable = Text
EnumBaseType SemanticTokenTypes
"variable"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Property = Text
EnumBaseType SemanticTokenTypes
"property"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_EnumMember = Text
EnumBaseType SemanticTokenTypes
"enumMember"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Event = Text
EnumBaseType SemanticTokenTypes
"event"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Function = Text
EnumBaseType SemanticTokenTypes
"function"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Method = Text
EnumBaseType SemanticTokenTypes
"method"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Macro = Text
EnumBaseType SemanticTokenTypes
"macro"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Keyword = Text
EnumBaseType SemanticTokenTypes
"keyword"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Modifier = Text
EnumBaseType SemanticTokenTypes
"modifier"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Comment = Text
EnumBaseType SemanticTokenTypes
"comment"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_String = Text
EnumBaseType SemanticTokenTypes
"string"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Number = Text
EnumBaseType SemanticTokenTypes
"number"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Regexp = Text
EnumBaseType SemanticTokenTypes
"regexp"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Operator = Text
EnumBaseType SemanticTokenTypes
"operator"
  toEnumBaseType SemanticTokenTypes
SemanticTokenTypes_Decorator = Text
EnumBaseType SemanticTokenTypes
"decorator"
  toEnumBaseType (SemanticTokenTypes_Custom Text
arg) = Text
EnumBaseType SemanticTokenTypes
arg

instance Language.LSP.Protocol.Types.LspEnum.LspOpenEnum SemanticTokenTypes where
  fromOpenEnumBaseType :: EnumBaseType SemanticTokenTypes -> SemanticTokenTypes
fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"namespace" = SemanticTokenTypes
SemanticTokenTypes_Namespace
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"type" = SemanticTokenTypes
SemanticTokenTypes_Type
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"class" = SemanticTokenTypes
SemanticTokenTypes_Class
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"enum" = SemanticTokenTypes
SemanticTokenTypes_Enum
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"interface" = SemanticTokenTypes
SemanticTokenTypes_Interface
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"struct" = SemanticTokenTypes
SemanticTokenTypes_Struct
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"typeParameter" = SemanticTokenTypes
SemanticTokenTypes_TypeParameter
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"parameter" = SemanticTokenTypes
SemanticTokenTypes_Parameter
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"variable" = SemanticTokenTypes
SemanticTokenTypes_Variable
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"property" = SemanticTokenTypes
SemanticTokenTypes_Property
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"enumMember" = SemanticTokenTypes
SemanticTokenTypes_EnumMember
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"event" = SemanticTokenTypes
SemanticTokenTypes_Event
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"function" = SemanticTokenTypes
SemanticTokenTypes_Function
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"method" = SemanticTokenTypes
SemanticTokenTypes_Method
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"macro" = SemanticTokenTypes
SemanticTokenTypes_Macro
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"keyword" = SemanticTokenTypes
SemanticTokenTypes_Keyword
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"modifier" = SemanticTokenTypes
SemanticTokenTypes_Modifier
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"comment" = SemanticTokenTypes
SemanticTokenTypes_Comment
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"string" = SemanticTokenTypes
SemanticTokenTypes_String
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"number" = SemanticTokenTypes
SemanticTokenTypes_Number
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"regexp" = SemanticTokenTypes
SemanticTokenTypes_Regexp
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"operator" = SemanticTokenTypes
SemanticTokenTypes_Operator
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
"decorator" = SemanticTokenTypes
SemanticTokenTypes_Decorator
  fromOpenEnumBaseType EnumBaseType SemanticTokenTypes
arg = Text -> SemanticTokenTypes
SemanticTokenTypes_Custom Text
EnumBaseType SemanticTokenTypes
arg