\begin{code}
module TcSplice where
import HsSyn	( HsSplice, HsBracket, HsQuasiQuote,
                  HsExpr, HsType, LHsExpr, LPat, LHsDecl )
import Name	( Name )
import RdrName	( RdrName )
import TcRnTypes( TcM, TcId )
import TcType	( BoxyRhoType, TcKind )
import Annotations ( Annotation, CoreAnnTarget )
import qualified Language.Haskell.TH as TH

tcSpliceExpr :: HsSplice Name
	     -> BoxyRhoType
	     -> TcM (HsExpr TcId)

kcSpliceType :: HsSplice Name
	     -> TcM (HsType Name, TcKind)

tcBracket :: HsBracket Name 
	  -> BoxyRhoType
	  -> TcM (LHsExpr TcId)

tcSpliceDecls :: LHsExpr Name -> TcM [LHsDecl RdrName]

lookupThName_maybe :: TH.Name -> TcM (Maybe Name)

runQuasiQuoteExpr :: HsQuasiQuote Name.Name -> TcM (LHsExpr RdrName)
runQuasiQuotePat  :: HsQuasiQuote Name -> TcM (LPat RdrName)
runAnnotation     :: CoreAnnTarget -> LHsExpr Name -> TcM Annotation
\end{code}
