{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Data.Morpheus.Types.Internal.AST.DirectiveLocation
  ( DirectiveLocation (..),
  )
where

import Data.Morpheus.Types.Internal.AST.Base (Msg (..))
import Language.Haskell.TH.Syntax (Lift)
import Relude hiding (Show, show)
import Prelude (Show (..))

data DirectiveLocation
  = QUERY
  | MUTATION
  | SUBSCRIPTION
  | FIELD
  | FRAGMENT_DEFINITION
  | FRAGMENT_SPREAD
  | INLINE_FRAGMENT
  | SCHEMA
  | SCALAR
  | OBJECT
  | FIELD_DEFINITION
  | ARGUMENT_DEFINITION
  | INTERFACE
  | UNION
  | ENUM
  | ENUM_VALUE
  | INPUT_OBJECT
  | INPUT_FIELD_DEFINITION
  deriving (Int -> DirectiveLocation -> ShowS
[DirectiveLocation] -> ShowS
DirectiveLocation -> String
(Int -> DirectiveLocation -> ShowS)
-> (DirectiveLocation -> String)
-> ([DirectiveLocation] -> ShowS)
-> Show DirectiveLocation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DirectiveLocation] -> ShowS
$cshowList :: [DirectiveLocation] -> ShowS
show :: DirectiveLocation -> String
$cshow :: DirectiveLocation -> String
showsPrec :: Int -> DirectiveLocation -> ShowS
$cshowsPrec :: Int -> DirectiveLocation -> ShowS
Show, DirectiveLocation -> DirectiveLocation -> Bool
(DirectiveLocation -> DirectiveLocation -> Bool)
-> (DirectiveLocation -> DirectiveLocation -> Bool)
-> Eq DirectiveLocation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DirectiveLocation -> DirectiveLocation -> Bool
$c/= :: DirectiveLocation -> DirectiveLocation -> Bool
== :: DirectiveLocation -> DirectiveLocation -> Bool
$c== :: DirectiveLocation -> DirectiveLocation -> Bool
Eq, DirectiveLocation -> Q Exp
DirectiveLocation -> Q (TExp DirectiveLocation)
(DirectiveLocation -> Q Exp)
-> (DirectiveLocation -> Q (TExp DirectiveLocation))
-> Lift DirectiveLocation
forall t. (t -> Q Exp) -> (t -> Q (TExp t)) -> Lift t
liftTyped :: DirectiveLocation -> Q (TExp DirectiveLocation)
$cliftTyped :: DirectiveLocation -> Q (TExp DirectiveLocation)
lift :: DirectiveLocation -> Q Exp
$clift :: DirectiveLocation -> Q Exp
Lift)

instance Msg DirectiveLocation where
  msg :: DirectiveLocation -> Message
msg = String -> Message
forall a. Msg a => a -> Message
msg (String -> Message)
-> (DirectiveLocation -> String) -> DirectiveLocation -> Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DirectiveLocation -> String
forall a. Show a => a -> String
show