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

{-|
Moniker uniqueness level to define scope of the moniker.

@since 3.16.0
-}
data UniquenessLevel = 
    {-|
  The moniker is only unique inside a document
  -}
  UniquenessLevel_Document
  | {-|
  The moniker is unique inside a project for which a dump got created
  -}
  UniquenessLevel_Project
  | {-|
  The moniker is unique inside the group to which a project belongs
  -}
  UniquenessLevel_Group
  | {-|
  The moniker is unique inside the moniker scheme.
  -}
  UniquenessLevel_Scheme
  | {-|
  The moniker is globally unique
  -}
  UniquenessLevel_Global
  deriving stock (Int -> UniquenessLevel -> ShowS
[UniquenessLevel] -> ShowS
UniquenessLevel -> String
(Int -> UniquenessLevel -> ShowS)
-> (UniquenessLevel -> String)
-> ([UniquenessLevel] -> ShowS)
-> Show UniquenessLevel
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UniquenessLevel -> ShowS
showsPrec :: Int -> UniquenessLevel -> ShowS
$cshow :: UniquenessLevel -> String
show :: UniquenessLevel -> String
$cshowList :: [UniquenessLevel] -> ShowS
showList :: [UniquenessLevel] -> ShowS
Show, UniquenessLevel -> UniquenessLevel -> Bool
(UniquenessLevel -> UniquenessLevel -> Bool)
-> (UniquenessLevel -> UniquenessLevel -> Bool)
-> Eq UniquenessLevel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UniquenessLevel -> UniquenessLevel -> Bool
== :: UniquenessLevel -> UniquenessLevel -> Bool
$c/= :: UniquenessLevel -> UniquenessLevel -> Bool
/= :: UniquenessLevel -> UniquenessLevel -> Bool
Eq, Eq UniquenessLevel
Eq UniquenessLevel =>
(UniquenessLevel -> UniquenessLevel -> Ordering)
-> (UniquenessLevel -> UniquenessLevel -> Bool)
-> (UniquenessLevel -> UniquenessLevel -> Bool)
-> (UniquenessLevel -> UniquenessLevel -> Bool)
-> (UniquenessLevel -> UniquenessLevel -> Bool)
-> (UniquenessLevel -> UniquenessLevel -> UniquenessLevel)
-> (UniquenessLevel -> UniquenessLevel -> UniquenessLevel)
-> Ord UniquenessLevel
UniquenessLevel -> UniquenessLevel -> Bool
UniquenessLevel -> UniquenessLevel -> Ordering
UniquenessLevel -> UniquenessLevel -> UniquenessLevel
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 :: UniquenessLevel -> UniquenessLevel -> Ordering
compare :: UniquenessLevel -> UniquenessLevel -> Ordering
$c< :: UniquenessLevel -> UniquenessLevel -> Bool
< :: UniquenessLevel -> UniquenessLevel -> Bool
$c<= :: UniquenessLevel -> UniquenessLevel -> Bool
<= :: UniquenessLevel -> UniquenessLevel -> Bool
$c> :: UniquenessLevel -> UniquenessLevel -> Bool
> :: UniquenessLevel -> UniquenessLevel -> Bool
$c>= :: UniquenessLevel -> UniquenessLevel -> Bool
>= :: UniquenessLevel -> UniquenessLevel -> Bool
$cmax :: UniquenessLevel -> UniquenessLevel -> UniquenessLevel
max :: UniquenessLevel -> UniquenessLevel -> UniquenessLevel
$cmin :: UniquenessLevel -> UniquenessLevel -> UniquenessLevel
min :: UniquenessLevel -> UniquenessLevel -> UniquenessLevel
Ord, (forall x. UniquenessLevel -> Rep UniquenessLevel x)
-> (forall x. Rep UniquenessLevel x -> UniquenessLevel)
-> Generic UniquenessLevel
forall x. Rep UniquenessLevel x -> UniquenessLevel
forall x. UniquenessLevel -> Rep UniquenessLevel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. UniquenessLevel -> Rep UniquenessLevel x
from :: forall x. UniquenessLevel -> Rep UniquenessLevel x
$cto :: forall x. Rep UniquenessLevel x -> UniquenessLevel
to :: forall x. Rep UniquenessLevel x -> UniquenessLevel
Generic)
  deriving anyclass (UniquenessLevel -> ()
(UniquenessLevel -> ()) -> NFData UniquenessLevel
forall a. (a -> ()) -> NFData a
$crnf :: UniquenessLevel -> ()
rnf :: UniquenessLevel -> ()
NFData, Eq UniquenessLevel
Eq UniquenessLevel =>
(Int -> UniquenessLevel -> Int)
-> (UniquenessLevel -> Int) -> Hashable UniquenessLevel
Int -> UniquenessLevel -> Int
UniquenessLevel -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> UniquenessLevel -> Int
hashWithSalt :: Int -> UniquenessLevel -> Int
$chash :: UniquenessLevel -> Int
hash :: UniquenessLevel -> Int
Hashable)
  deriving ( [UniquenessLevel] -> Value
[UniquenessLevel] -> Encoding
UniquenessLevel -> Bool
UniquenessLevel -> Value
UniquenessLevel -> Encoding
(UniquenessLevel -> Value)
-> (UniquenessLevel -> Encoding)
-> ([UniquenessLevel] -> Value)
-> ([UniquenessLevel] -> Encoding)
-> (UniquenessLevel -> Bool)
-> ToJSON UniquenessLevel
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: UniquenessLevel -> Value
toJSON :: UniquenessLevel -> Value
$ctoEncoding :: UniquenessLevel -> Encoding
toEncoding :: UniquenessLevel -> Encoding
$ctoJSONList :: [UniquenessLevel] -> Value
toJSONList :: [UniquenessLevel] -> Value
$ctoEncodingList :: [UniquenessLevel] -> Encoding
toEncodingList :: [UniquenessLevel] -> Encoding
$comitField :: UniquenessLevel -> Bool
omitField :: UniquenessLevel -> Bool
Aeson.ToJSON
  , Maybe UniquenessLevel
Value -> Parser [UniquenessLevel]
Value -> Parser UniquenessLevel
(Value -> Parser UniquenessLevel)
-> (Value -> Parser [UniquenessLevel])
-> Maybe UniquenessLevel
-> FromJSON UniquenessLevel
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser UniquenessLevel
parseJSON :: Value -> Parser UniquenessLevel
$cparseJSONList :: Value -> Parser [UniquenessLevel]
parseJSONList :: Value -> Parser [UniquenessLevel]
$comittedField :: Maybe UniquenessLevel
omittedField :: Maybe UniquenessLevel
Aeson.FromJSON ) via (Language.LSP.Protocol.Types.LspEnum.AsLspEnum UniquenessLevel)
  deriving (forall ann. UniquenessLevel -> Doc ann)
-> (forall ann. [UniquenessLevel] -> Doc ann)
-> Pretty UniquenessLevel
forall ann. [UniquenessLevel] -> Doc ann
forall ann. UniquenessLevel -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. UniquenessLevel -> Doc ann
pretty :: forall ann. UniquenessLevel -> Doc ann
$cprettyList :: forall ann. [UniquenessLevel] -> Doc ann
prettyList :: forall ann. [UniquenessLevel] -> Doc ann
Pretty via (ViaJSON UniquenessLevel)

instance Language.LSP.Protocol.Types.LspEnum.LspEnum UniquenessLevel where
  knownValues :: Set UniquenessLevel
knownValues = [UniquenessLevel] -> Set UniquenessLevel
forall a. Ord a => [a] -> Set a
Data.Set.fromList [UniquenessLevel
UniquenessLevel_Document
    ,UniquenessLevel
UniquenessLevel_Project
    ,UniquenessLevel
UniquenessLevel_Group
    ,UniquenessLevel
UniquenessLevel_Scheme
    ,UniquenessLevel
UniquenessLevel_Global]
  type EnumBaseType UniquenessLevel = Data.Text.Text
  toEnumBaseType :: UniquenessLevel -> EnumBaseType UniquenessLevel
toEnumBaseType UniquenessLevel
UniquenessLevel_Document = Text
EnumBaseType UniquenessLevel
"document"
  toEnumBaseType UniquenessLevel
UniquenessLevel_Project = Text
EnumBaseType UniquenessLevel
"project"
  toEnumBaseType UniquenessLevel
UniquenessLevel_Group = Text
EnumBaseType UniquenessLevel
"group"
  toEnumBaseType UniquenessLevel
UniquenessLevel_Scheme = Text
EnumBaseType UniquenessLevel
"scheme"
  toEnumBaseType UniquenessLevel
UniquenessLevel_Global = Text
EnumBaseType UniquenessLevel
"global"
  fromEnumBaseType :: EnumBaseType UniquenessLevel -> Maybe UniquenessLevel
fromEnumBaseType EnumBaseType UniquenessLevel
"document" = UniquenessLevel -> Maybe UniquenessLevel
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UniquenessLevel
UniquenessLevel_Document
  fromEnumBaseType EnumBaseType UniquenessLevel
"project" = UniquenessLevel -> Maybe UniquenessLevel
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UniquenessLevel
UniquenessLevel_Project
  fromEnumBaseType EnumBaseType UniquenessLevel
"group" = UniquenessLevel -> Maybe UniquenessLevel
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UniquenessLevel
UniquenessLevel_Group
  fromEnumBaseType EnumBaseType UniquenessLevel
"scheme" = UniquenessLevel -> Maybe UniquenessLevel
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UniquenessLevel
UniquenessLevel_Scheme
  fromEnumBaseType EnumBaseType UniquenessLevel
"global" = UniquenessLevel -> Maybe UniquenessLevel
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UniquenessLevel
UniquenessLevel_Global
  fromEnumBaseType EnumBaseType UniquenessLevel
_ = Maybe UniquenessLevel
forall a. Maybe a
Nothing