{-# LANGUAGE Safe #-}
module Language.Haskell.TH(
        
        Q,
        runQ,
        Quote(..),
        
        reportError,              
        reportWarning,            
        report,                   
        recover,          
        location,         
        Loc(..),
        runIO,            
        
        
        reify,            
        reifyModule,
        newDeclarationGroup,
        Info(..), ModuleInfo(..),
        InstanceDec,
        ParentName,
        SumAlt, SumArity,
        Arity,
        Unlifted,
        
        Extension(..),
        extsEnabled, isExtEnabled,
        
        lookupTypeName,  
        lookupValueName, 
        
        reifyFixity,
        
        reifyType,
        
        reifyInstances,
        isInstance,
        
        reifyRoles,
        
        reifyAnnotations, AnnLookup(..),
        
        reifyConStrictness,
        
        TExp, unType,
        Code(..), unTypeCode, unsafeCodeCoerce, hoistCode, bindCode,
        bindCode_, joinCode, liftCode,
        
        Name, NameSpace,        
        
        mkName,         
        
        nameBase,       
        nameModule,     
        namePackage,    
        nameSpace,      
        
        tupleTypeName, tupleDataName,   
        unboxedTupleTypeName, unboxedTupleDataName, 
        unboxedSumTypeName, 
        unboxedSumDataName, 
    
    
    
    
    
        Dec(..), Con(..), Clause(..),
        SourceUnpackedness(..), SourceStrictness(..), DecidedStrictness(..),
        Bang(..), Strict, Foreign(..), Callconv(..), Safety(..), Pragma(..),
        Inline(..), RuleMatch(..), Phases(..), RuleBndr(..), AnnTarget(..),
        FunDep(..), TySynEqn(..), TypeFamilyHead(..),
        Fixity(..), FixityDirection(..), defaultFixity, maxPrecedence,
        PatSynDir(..), PatSynArgs(..),
    
        Exp(..), Match(..), Body(..), Guard(..), Stmt(..), Range(..), Lit(..),
    
        Pat(..), FieldExp, FieldPat,
    
        Type(..), TyVarBndr(..), TyLit(..), Kind, Cxt, Pred, Syntax.Role(..),
        Syntax.Specificity(..),
        FamilyResultSig(..), Syntax.InjectivityAnn(..), PatSynType, BangType, VarBangType,
    
        putDoc, getDoc, DocLoc(..),
    
    module Language.Haskell.TH.Lib,
    
    Ppr(..), pprint, pprExp, pprLit, pprPat, pprParendType
   ) where
import Language.Haskell.TH.Syntax as Syntax
import Language.Haskell.TH.Lib
import Language.Haskell.TH.Ppr