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

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