{- 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.CodeActionKind 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 code action kinds
-}
data CodeActionKind = 
    {-|
  Empty kind.
  -}
  CodeActionKind_Empty
  | {-|
  Base kind for quickfix actions: 'quickfix'
  -}
  CodeActionKind_QuickFix
  | {-|
  Base kind for refactoring actions: 'refactor'
  -}
  CodeActionKind_Refactor
  | {-|
  Base kind for refactoring extraction actions: 'refactor.extract'

  Example extract actions:

  - Extract method
  - Extract function
  - Extract variable
  - Extract interface from class
  - ...
  -}
  CodeActionKind_RefactorExtract
  | {-|
  Base kind for refactoring inline actions: 'refactor.inline'

  Example inline actions:

  - Inline function
  - Inline variable
  - Inline constant
  - ...
  -}
  CodeActionKind_RefactorInline
  | {-|
  Base kind for refactoring rewrite actions: 'refactor.rewrite'

  Example rewrite actions:

  - Convert JavaScript function to class
  - Add or remove parameter
  - Encapsulate field
  - Make method static
  - Move method to base class
  - ...
  -}
  CodeActionKind_RefactorRewrite
  | {-|
  Base kind for source actions: `source`

  Source code actions apply to the entire file.
  -}
  CodeActionKind_Source
  | {-|
  Base kind for an organize imports source action: `source.organizeImports`
  -}
  CodeActionKind_SourceOrganizeImports
  | {-|
  Base kind for auto-fix source actions: `source.fixAll`.

  Fix all actions automatically fix errors that have a clear fix that do not require user input.
  They should not suppress errors or perform unsafe fixes such as generating new types or classes.

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

instance Language.LSP.Protocol.Types.LspEnum.LspEnum CodeActionKind where
  knownValues :: Set CodeActionKind
knownValues = [CodeActionKind] -> Set CodeActionKind
forall a. Ord a => [a] -> Set a
Data.Set.fromList [CodeActionKind
CodeActionKind_Empty
    ,CodeActionKind
CodeActionKind_QuickFix
    ,CodeActionKind
CodeActionKind_Refactor
    ,CodeActionKind
CodeActionKind_RefactorExtract
    ,CodeActionKind
CodeActionKind_RefactorInline
    ,CodeActionKind
CodeActionKind_RefactorRewrite
    ,CodeActionKind
CodeActionKind_Source
    ,CodeActionKind
CodeActionKind_SourceOrganizeImports
    ,CodeActionKind
CodeActionKind_SourceFixAll]
  type EnumBaseType CodeActionKind = Data.Text.Text
  toEnumBaseType :: CodeActionKind -> EnumBaseType CodeActionKind
toEnumBaseType CodeActionKind
CodeActionKind_Empty = Text
EnumBaseType CodeActionKind
""
  toEnumBaseType CodeActionKind
CodeActionKind_QuickFix = Text
EnumBaseType CodeActionKind
"quickfix"
  toEnumBaseType CodeActionKind
CodeActionKind_Refactor = Text
EnumBaseType CodeActionKind
"refactor"
  toEnumBaseType CodeActionKind
CodeActionKind_RefactorExtract = Text
EnumBaseType CodeActionKind
"refactor.extract"
  toEnumBaseType CodeActionKind
CodeActionKind_RefactorInline = Text
EnumBaseType CodeActionKind
"refactor.inline"
  toEnumBaseType CodeActionKind
CodeActionKind_RefactorRewrite = Text
EnumBaseType CodeActionKind
"refactor.rewrite"
  toEnumBaseType CodeActionKind
CodeActionKind_Source = Text
EnumBaseType CodeActionKind
"source"
  toEnumBaseType CodeActionKind
CodeActionKind_SourceOrganizeImports = Text
EnumBaseType CodeActionKind
"source.organizeImports"
  toEnumBaseType CodeActionKind
CodeActionKind_SourceFixAll = Text
EnumBaseType CodeActionKind
"source.fixAll"
  toEnumBaseType (CodeActionKind_Custom Text
arg) = Text
EnumBaseType CodeActionKind
arg

instance Language.LSP.Protocol.Types.LspEnum.LspOpenEnum CodeActionKind where
  fromOpenEnumBaseType :: EnumBaseType CodeActionKind -> CodeActionKind
fromOpenEnumBaseType EnumBaseType CodeActionKind
"" = CodeActionKind
CodeActionKind_Empty
  fromOpenEnumBaseType EnumBaseType CodeActionKind
"quickfix" = CodeActionKind
CodeActionKind_QuickFix
  fromOpenEnumBaseType EnumBaseType CodeActionKind
"refactor" = CodeActionKind
CodeActionKind_Refactor
  fromOpenEnumBaseType EnumBaseType CodeActionKind
"refactor.extract" = CodeActionKind
CodeActionKind_RefactorExtract
  fromOpenEnumBaseType EnumBaseType CodeActionKind
"refactor.inline" = CodeActionKind
CodeActionKind_RefactorInline
  fromOpenEnumBaseType EnumBaseType CodeActionKind
"refactor.rewrite" = CodeActionKind
CodeActionKind_RefactorRewrite
  fromOpenEnumBaseType EnumBaseType CodeActionKind
"source" = CodeActionKind
CodeActionKind_Source
  fromOpenEnumBaseType EnumBaseType CodeActionKind
"source.organizeImports" = CodeActionKind
CodeActionKind_SourceOrganizeImports
  fromOpenEnumBaseType EnumBaseType CodeActionKind
"source.fixAll" = CodeActionKind
CodeActionKind_SourceFixAll
  fromOpenEnumBaseType EnumBaseType CodeActionKind
arg = Text -> CodeActionKind
CodeActionKind_Custom Text
EnumBaseType CodeActionKind
arg