 +                             <*> traverse cvType b
 +cvType (HsKindSig a b) = HsKindSig <$> traverse cvType a
 +                                   <*> traverse cvType b
-+cvType (HsSpliceTy {}) = panic "cvType: HsSpliceTy not supported"
-+cvType (HsDocTy {}) = panic "cvType: HsDocTy not supported"
 +cvType (HsBangTy a b) = HsBangTy a <$> traverse cvType b
 +cvType (HsRecTy a) = HsRecTy <$> traverse (traverse cvConDeclField) a
 +cvType (HsExplicitListTy a b c) = HsExplicitListTy a b

+      <*> cvHsPatSynDir e
+
+cvHsPatSynDetails
+  :: (a -> RnM b)
+  -> HsPatSynDetails a
+  -> RnM (HsPatSynDetails b)
+cvHsPatSynDetails f =
+  cvHsConDetails f (traverse (cvRecordPatSynField f))
+
+cvRecordPatSynField
+  :: (a -> RnM b)
+  -> RecordPatSynField a
+  -> RnM (RecordPatSynField b)
+cvRecordPatSynField f (RecordPatSynField a b) =
+  RecordPatSynField <$> f a <*> f b
+
+cvHsPatSynDir :: TypeConstraints p q => HsPatSynDir p -> RnM (HsPatSynDir q)
+cvHsPatSynDir Unidirectional = pure Unidirectional
+cvHsPatSynDir ImplicitBidirectional = pure ImplicitBidirectional
+cvHsPatSynDir (ExplicitBidirectional a) = ExplicitBidirectional <$> cvMatchGroup a
+
+-- * Looking up modules/packages for Orig names
+

   -- For details on above see note [Api annotations] in ApiAnnotation
   | RecordUpd
       { rupd_expr :: LHsExpr p
@@ -833,7 +833,8 @@ pprBinds b = pprDeeper (ppr b)
 ppr_lexpr :: (SourceTextX p, OutputableBndrId p) => LHsExpr p -> SDoc
 ppr_lexpr e = ppr_expr (unLoc e)
 
-ppr_expr :: forall p. (SourceTextX p, OutputableBndrId p) => HsExpr p -> SDoc
+ppr_expr :: forall p. (SourceTextX p, OutputableBndrId p)
+         => HsExpr p -> SDoc
 ppr_expr (HsVar (L _ v))  = pprPrefixOcc v
 ppr_expr (HsUnboundVar uv)= pprPrefixOcc (unboundVarOcc uv)
 ppr_expr (HsConLikeOut c) = pprPrefixOcc c
@@ -859,6 +860,7 @@ ppr_expr (OpApp e1 op _ e2)
   = pp_prefixly
 
   where
+    should_print_infix :: HsExpr p -> Maybe SDoc
     should_print_infix (HsVar (L _ v)) = Just (pprInfixOcc v)
     should_print_infix (HsConLikeOut c)= Just (pprInfixOcc (conLikeName c))
     should_print_infix (HsRecFld f)    = Just (pprInfixOcc f)
@@ -891,6 +893,7 @@ ppr_expr (SectionL expr op)
 
     pp_prefixly = hang (hsep [text " \\ x_ ->", ppr op])
