@@ -541,8 +541,8 @@ p_pat_hsRecField HsRecField {..} = do
541541
542542p_hsSplice :: HsSplice GhcPs -> R ()
543543p_hsSplice = \case
544− HsTypedSplice {} -> notImplemented "HsTypedSplice"
545− HsUntypedSplice {} -> notImplemented "HsUntypedSplice"
544+ HsTypedSplice NoExt deco _ expr -> p_hsSpliceTH True expr deco
545+ HsUntypedSplice NoExt deco _ expr -> p_hsSpliceTH False expr deco
546546 HsQuasiQuote NoExt _ quoterName srcSpan str -> do
547547 let locatedQuoterName = L srcSpan quoterName
548548 p_quasiQuote locatedQuoterName $ do
@@ -551,6 +551,23 @@ p_hsSplice = \case
551551 HsSpliced {} -> notImplemented "HsSpliced"
552552 XSplice {} -> notImplemented "XSplice"
553553
554+p_hsSpliceTH
555+ :: Bool -- ^ Typed splice?
556+ -> LHsExpr GhcPs -- ^ Splice expression
557+ -> SpliceDecoration -- ^ Splice decoration
558+ -> R ()
559+p_hsSpliceTH isTyped expr = \case
560+ HasParens -> do
561+ txt decoSymbol
562+ parens (located expr p_hsExpr)
563+ HasDollar -> do
564+ txt decoSymbol
565+ located expr p_hsExpr
566+ NoParens -> do
567+ located expr p_hsExpr
568+ where
569+ decoSymbol = if isTyped then "$$" else "$"
570+
554571p_quasiQuote :: Located RdrName -> R () -> R ()
555572p_quasiQuote quoter m = do
556573 txt "["