-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Shared functionality between GHC and the template-haskell
--   library
--   
--   This library contains various bits shared between the <tt>ghc</tt> and
--   <tt>template-haskell</tt> libraries.
--   
--   This package exists to ensure that <tt>template-haskell</tt> has a
--   minimal set of transitive dependencies, since it is intended to be
--   depended upon by user code.
@package ghc-boot-th
@version 9.14.0.20251028

module GHC.Boot.TH.Lib

module GHC.Boot.TH.Lib.Map
data Map k a
empty :: Map k a
insert :: Ord k => k -> a -> Map k a -> Map k a
lookup :: Ord k => k -> Map k a -> Maybe a

module GHC.Boot.TH.Lift

module GHC.Boot.TH.Quote

module GHC.Boot.TH.Syntax


-- | Monadic front-end to Text.PrettyPrint
module GHC.Boot.TH.PprLib
type Doc = PprM Doc
data PprM a
empty :: Doc
semi :: Doc
comma :: Doc
colon :: Doc
dcolon :: Doc
space :: Doc
equals :: Doc
arrow :: Doc
lparen :: Doc
rparen :: Doc
lbrack :: Doc
rbrack :: Doc
lbrace :: Doc
rbrace :: Doc
text :: String -> Doc
char :: Char -> Doc
ptext :: String -> Doc
int :: Int -> Doc
integer :: Integer -> Doc
float :: Float -> Doc
double :: Double -> Doc
rational :: Rational -> Doc
parens :: Doc -> Doc
brackets :: Doc -> Doc
braces :: Doc -> Doc
quotes :: Doc -> Doc
doubleQuotes :: Doc -> Doc
(<>) :: Doc -> Doc -> Doc
infixl 6 <>
(<+>) :: Doc -> Doc -> Doc
infixl 6 <+>
hcat :: [Doc] -> Doc
hsep :: [Doc] -> Doc
($$) :: Doc -> Doc -> Doc
infixl 5 $$
($+$) :: Doc -> Doc -> Doc
infixl 5 $+$
vcat :: [Doc] -> Doc
sep :: [Doc] -> Doc
cat :: [Doc] -> Doc
fsep :: [Doc] -> Doc
fcat :: [Doc] -> Doc
nest :: Int -> Doc -> Doc
hang :: Doc -> Int -> Doc -> Doc
punctuate :: Doc -> [Doc] -> [Doc]
isEmpty :: Doc -> PprM Bool
to_HPJ_Doc :: Doc -> Doc
pprName :: Name -> Doc
pprName' :: NameIs -> Name -> Doc
instance GHC.Internal.Base.Applicative GHC.Boot.TH.PprLib.PprM
instance GHC.Internal.Base.Functor GHC.Boot.TH.PprLib.PprM
instance GHC.Internal.Base.Monad GHC.Boot.TH.PprLib.PprM
instance GHC.Internal.Show.Show GHC.Boot.TH.PprLib.Doc

module GHC.ForeignSrcLang.Type

-- | Foreign formats supported by GHC via TH
data ForeignSrcLang

-- | C
LangC :: ForeignSrcLang

-- | C++
LangCxx :: ForeignSrcLang

-- | Objective C
LangObjc :: ForeignSrcLang

-- | Objective C++
LangObjcxx :: ForeignSrcLang

-- | Assembly language (.s)
LangAsm :: ForeignSrcLang

-- | JavaScript
LangJs :: ForeignSrcLang

-- | Object (.o)
RawObject :: ForeignSrcLang


-- | A data type defining the language extensions supported by GHC.
module GHC.LanguageExtensions.Type

-- | The language extensions known to GHC.
--   
--   Note that there is an orphan <tt>Binary</tt> instance for this type
--   supplied by the <a>GHC.LanguageExtensions</a> module provided by
--   <tt>ghc-boot</tt>. We can't provide here as this would require adding
--   transitive dependencies to the <tt>template-haskell</tt> package,
--   which must have a minimal dependency set.
data Extension
Cpp :: Extension
OverlappingInstances :: Extension
UndecidableInstances :: Extension
IncoherentInstances :: Extension
UndecidableSuperClasses :: Extension
MonomorphismRestriction :: Extension
MonoLocalBinds :: Extension
DeepSubsumption :: Extension
RelaxedPolyRec :: Extension
ExtendedDefaultRules :: Extension
NamedDefaults :: Extension
ForeignFunctionInterface :: Extension
UnliftedFFITypes :: Extension
InterruptibleFFI :: Extension
CApiFFI :: Extension
GHCForeignImportPrim :: Extension
JavaScriptFFI :: Extension
ParallelArrays :: Extension
Arrows :: Extension
TemplateHaskell :: Extension
TemplateHaskellQuotes :: Extension
QualifiedDo :: Extension
QuasiQuotes :: Extension
ImplicitParams :: Extension
ImplicitPrelude :: Extension
ScopedTypeVariables :: Extension
AllowAmbiguousTypes :: Extension
UnboxedTuples :: Extension
UnboxedSums :: Extension
UnliftedNewtypes :: Extension
UnliftedDatatypes :: Extension
BangPatterns :: Extension
TypeFamilies :: Extension
TypeFamilyDependencies :: Extension
TypeInType :: Extension
OverloadedStrings :: Extension
OverloadedLists :: Extension
NumDecimals :: Extension
DisambiguateRecordFields :: Extension
RecordWildCards :: Extension
NamedFieldPuns :: Extension
ViewPatterns :: Extension
OrPatterns :: Extension
GADTs :: Extension
GADTSyntax :: Extension
NPlusKPatterns :: Extension
DoAndIfThenElse :: Extension
BlockArguments :: Extension
RebindableSyntax :: Extension
ConstraintKinds :: Extension
PolyKinds :: Extension
DataKinds :: Extension
TypeData :: Extension
InstanceSigs :: Extension
ApplicativeDo :: Extension
LinearTypes :: Extension
RequiredTypeArguments :: Extension
StandaloneDeriving :: Extension
DeriveDataTypeable :: Extension
AutoDeriveTypeable :: Extension
DeriveFunctor :: Extension
DeriveTraversable :: Extension
DeriveFoldable :: Extension
DeriveGeneric :: Extension
DefaultSignatures :: Extension
DeriveAnyClass :: Extension
DeriveLift :: Extension
DerivingStrategies :: Extension
DerivingVia :: Extension
TypeSynonymInstances :: Extension
FlexibleContexts :: Extension
FlexibleInstances :: Extension
ConstrainedClassMethods :: Extension
MultiParamTypeClasses :: Extension
NullaryTypeClasses :: Extension
FunctionalDependencies :: Extension
UnicodeSyntax :: Extension
ExistentialQuantification :: Extension
MagicHash :: Extension
EmptyDataDecls :: Extension
KindSignatures :: Extension
RoleAnnotations :: Extension
ParallelListComp :: Extension
TransformListComp :: Extension
MonadComprehensions :: Extension
GeneralizedNewtypeDeriving :: Extension
RecursiveDo :: Extension
PostfixOperators :: Extension
TupleSections :: Extension
PatternGuards :: Extension
LiberalTypeSynonyms :: Extension
RankNTypes :: Extension
ImpredicativeTypes :: Extension
TypeOperators :: Extension
ExplicitNamespaces :: Extension
PackageImports :: Extension
ExplicitForAll :: Extension
AlternativeLayoutRule :: Extension
AlternativeLayoutRuleTransitional :: Extension
DatatypeContexts :: Extension
NondecreasingIndentation :: Extension
RelaxedLayout :: Extension
TraditionalRecordSyntax :: Extension
LambdaCase :: Extension
MultiWayIf :: Extension
BinaryLiterals :: Extension
NegativeLiterals :: Extension
HexFloatLiterals :: Extension
DuplicateRecordFields :: Extension
OverloadedLabels :: Extension
EmptyCase :: Extension
PatternSynonyms :: Extension
PartialTypeSignatures :: Extension
NamedWildCards :: Extension
StaticPointers :: Extension
TypeApplications :: Extension
Strict :: Extension
StrictData :: Extension
EmptyDataDeriving :: Extension
NumericUnderscores :: Extension
QuantifiedConstraints :: Extension
StarIsType :: Extension
ImportQualifiedPost :: Extension
CUSKs :: Extension
StandaloneKindSignatures :: Extension
LexicalNegation :: Extension
FieldSelectors :: Extension
OverloadedRecordDot :: Extension
OverloadedRecordUpdate :: Extension
TypeAbstractions :: Extension
ExtendedLiterals :: Extension
ListTuplePuns :: Extension
MultilineStrings :: Extension
ExplicitLevelImports :: Extension
ImplicitStagePersistence :: Extension


-- | Functions to evaluate whether or not a string is a valid identifier.
module GHC.Lexeme
startsVarSym :: Char -> Bool
startsVarId :: Char -> Bool
startsConSym :: Char -> Bool
startsConId :: Char -> Bool
startsVarSymASCII :: Char -> Bool
isVarSymChar :: Char -> Bool

-- | Is this character acceptable in a symbol (after the first char)? See
--   alexGetByte in GHC.Parser.Lexer
okSymChar :: Char -> Bool


-- | contains a prettyprinter for the Template Haskell datatypes
module GHC.Boot.TH.Ppr
nestDepth :: Int
type Precedence = Int
appPrec :: Precedence
opPrec :: Precedence
unopPrec :: Precedence
funPrec :: Precedence
qualPrec :: Precedence
sigPrec :: Precedence
noPrec :: Precedence
parensIf :: Bool -> Doc -> Doc
pprint :: Ppr a => a -> String
class Ppr a
ppr :: Ppr a => a -> Doc
ppr_list :: Ppr a => [a] -> Doc
ppr_sig :: Name -> Type -> Doc
pprFixity :: Name -> Fixity -> NamespaceSpecifier -> Doc
pprNamespaceSpecifier :: NamespaceSpecifier -> Doc

-- | Pretty prints a pattern synonym type signature
pprPatSynSig :: Name -> PatSynType -> Doc

-- | Pretty prints a pattern synonym's type; follows the usual conventions
--   to print a pattern synonym type compactly, yet unambiguously. See the
--   note on <a>PatSynType</a> and the section on pattern synonyms in the
--   GHC user's guide for more information.
pprPatSynType :: PatSynType -> Doc
pprPrefixOcc :: Name -> Doc
isSymOcc :: Name -> Bool
pprInfixExp :: Exp -> Doc
pprExp :: Precedence -> Exp -> Doc
pprFields :: [(Name, Exp)] -> Doc
pprMaybeExp :: Precedence -> Maybe Exp -> Doc
pprMatchPat :: Pat -> Doc
pprGuarded :: Doc -> (Guard, Exp) -> Doc
pprBody :: Bool -> Body -> Doc
pprClause :: Bool -> Clause -> Doc
pprLit :: Precedence -> Lit -> Doc
bytesToString :: [Word8] -> String
pprString :: String -> Doc
pprPat :: Precedence -> Pat -> Doc
ppr_dec :: Bool -> Dec -> Doc
ppr_deriv_strategy :: DerivStrategy -> Doc
ppr_overlap :: Overlap -> Doc
ppr_data :: Bool -> Doc -> Cxt -> Maybe Name -> Doc -> Maybe Kind -> [Con] -> [DerivClause] -> Doc
ppr_newtype :: Bool -> Doc -> Cxt -> Maybe Name -> Doc -> Maybe Kind -> Con -> [DerivClause] -> Doc
ppr_type_data :: Bool -> Doc -> Cxt -> Maybe Name -> Doc -> Maybe Kind -> [Con] -> [DerivClause] -> Doc
ppr_typedef :: String -> Bool -> Doc -> Cxt -> Maybe Name -> Doc -> Maybe Kind -> [Con] -> [DerivClause] -> Doc
ppr_deriv_clause :: DerivClause -> Doc
ppr_tySyn :: Doc -> Maybe Name -> Doc -> Type -> Doc
ppr_tf_head :: TypeFamilyHead -> Doc
ppr_bndrs :: PprFlag flag => Maybe [TyVarBndr flag] -> Doc
ppr_ty_forall :: Maybe [TyVarBndr ()] -> Doc
ppr_tm_forall :: Maybe [TyVarBndr ()] -> [RuleBndr] -> Doc
commaSepApplied :: [Name] -> Doc
pprForall :: [TyVarBndr Specificity] -> Cxt -> Doc
pprForallVis :: [TyVarBndr ()] -> Cxt -> Doc
pprForall' :: PprFlag flag => ForallVisFlag -> [TyVarBndr flag] -> Cxt -> Doc
pprRecFields :: [(Name, Strict, Type)] -> Type -> Doc
pprGadtRHS :: [(Strict, Type)] -> Type -> Doc
pprVarBangType :: VarBangType -> Doc
pprBangType :: BangType -> Doc

-- | <i>Deprecated: As of <tt>template-haskell-2.11.0.0</tt>,
--   <a>VarStrictType</a> has been replaced by <a>VarBangType</a>. Please
--   use <a>pprVarBangType</a> instead.</i>
pprVarStrictType :: (Name, Strict, Type) -> Doc

-- | <i>Deprecated: As of <tt>template-haskell-2.11.0.0</tt>,
--   <a>StrictType</a> has been replaced by <a>BangType</a>. Please use
--   <a>pprBangType</a> instead.</i>
pprStrictType :: (Strict, Type) -> Doc
pprType :: Precedence -> Type -> Doc
pprParendType :: Type -> Doc
pprInfixT :: Precedence -> Type -> Doc
pprParendTypeArg :: TypeArg -> Doc
isStarT :: Type -> Bool
pprTyApp :: Precedence -> (Type, [TypeArg]) -> Doc
fromTANormal :: TypeArg -> Maybe Type
pprFunArgType :: Type -> Doc
data ForallVisFlag
ForallVis :: ForallVisFlag
ForallInvis :: ForallVisFlag
data TypeArg
TANormal :: Type -> TypeArg
TyArg :: Kind -> TypeArg
split :: Type -> (Type, [TypeArg])
pprTyLit :: TyLit -> Doc
class PprFlag flag
pprTyVarBndr :: PprFlag flag => TyVarBndr flag -> Doc
pprBndrVis :: BndrVis -> Doc -> Doc
pprCtxWith :: Ppr a => (Precedence -> a -> Doc) -> [a] -> Doc
pprCxt :: Cxt -> Doc
ppr_ctx_preds_with :: Ppr a => (Precedence -> a -> Doc) -> Precedence -> [a] -> Doc
ppr_cxt_preds :: Precedence -> Cxt -> Doc
where_clause :: [Dec] -> Doc
showtextl :: Show a => a -> Doc
hashParens :: Doc -> Doc
quoteParens :: Doc -> Doc
sepWith :: Doc -> (a -> Doc) -> [a] -> Doc
commaSep :: Ppr a => [a] -> Doc
commaSepWith :: (a -> Doc) -> [a] -> Doc
semiSep :: Ppr a => [a] -> Doc
semiSepWith :: (a -> Doc) -> [a] -> Doc
unboxedSumBars :: Doc -> SumAlt -> SumArity -> Doc
bar :: Doc
instance GHC.Boot.TH.Ppr.PprFlag GHC.Internal.TH.Syntax.BndrVis
instance GHC.Boot.TH.Ppr.PprFlag GHC.Internal.TH.Syntax.Specificity
instance GHC.Boot.TH.Ppr.PprFlag ()
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Bang
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Clause
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Con
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Dec
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.DecidedStrictness
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Exp
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.FamilyResultSig
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Foreign
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.FunDep
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Info
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.InjectivityAnn
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Inline
instance GHC.Boot.TH.Ppr.Ppr a => GHC.Boot.TH.Ppr.Ppr [a]
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Lit
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Loc
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Match
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Module
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.ModuleInfo
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Name
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Pat
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.PatSynArgs
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.PatSynDir
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Phases
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Pragma
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Range
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Role
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.RuleBndr
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.RuleMatch
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.SourceStrictness
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.SourceUnpackedness
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Stmt
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.TyLit
instance GHC.Boot.TH.Ppr.PprFlag flag => GHC.Boot.TH.Ppr.Ppr (GHC.Internal.TH.Syntax.TyVarBndr flag)
instance GHC.Boot.TH.Ppr.Ppr GHC.Internal.TH.Syntax.Type
instance GHC.Boot.TH.Ppr.Ppr GHC.Boot.TH.Ppr.TypeArg
instance GHC.Internal.Show.Show GHC.Boot.TH.Ppr.ForallVisFlag
