@@ -541,8 +541,8 @@ p_pat_hsRecField HsRecField {..} = do
542p_hsSplice :: HsSplice GhcPs -> R ()
542p_hsSplice :: HsSplice GhcPs -> R ()
543p_hsSplice = \case
543p_hsSplice = \case
544− HsTypedSplice {} -> notImplemented "HsTypedSplice"
544+ HsTypedSplice NoExt deco _ expr -> p_hsSpliceTH True expr deco
545− HsUntypedSplice {} -> notImplemented "HsUntypedSplice"
545+ HsUntypedSplice NoExt deco _ expr -> p_hsSpliceTH False expr deco
546 HsQuasiQuote NoExt _ quoterName srcSpan str -> do
546 HsQuasiQuote NoExt _ quoterName srcSpan str -> do
547 let locatedQuoterName = L srcSpan quoterName
547 let locatedQuoterName = L srcSpan quoterName
548 p_quasiQuote locatedQuoterName $ do
548 p_quasiQuote locatedQuoterName $ do
@@ -551,6 +551,23 @@ p_hsSplice = \case
551 HsSpliced {} -> notImplemented "HsSpliced"
551 HsSpliced {} -> notImplemented "HsSpliced"
552 XSplice {} -> notImplemented "XSplice"
552 XSplice {} -> notImplemented "XSplice"
555+ :: Bool -- ^ Typed splice?
556+ -> LHsExpr GhcPs -- ^ Splice expression
557+ -> SpliceDecoration -- ^ Splice decoration
559+p_hsSpliceTH isTyped expr = \case
562+ parens (located expr p_hsExpr)
565+ located expr p_hsExpr
567+ located expr p_hsExpr
569+ decoSymbol = if isTyped then "$$" else "$"
554p_quasiQuote :: Located RdrName -> R () -> R ()
571p_quasiQuote :: Located RdrName -> R () -> R ()
555p_quasiQuote quoter m = do
572p_quasiQuote quoter m = do