{-# LANGUAGE RecordWildCards #-} module HIndent.Ast.Declaration.Rule.Binder ( RuleBinder , mkRuleBinder ) where import HIndent.Ast.Name.Prefix import HIndent.Ast.NodeComments import HIndent.Ast.WithComments import qualified HIndent.GhcLibParserWrapper.GHC.Hs as GHC import {-# SOURCE #-} HIndent.Pretty import HIndent.Pretty.Combinators import HIndent.Pretty.NodeComments data RuleBinder = RuleBinder { RuleBinder -> WithComments PrefixName name :: WithComments PrefixName , RuleBinder -> Maybe (WithComments (HsType GhcPs)) signature :: Maybe (WithComments (GHC.HsType GHC.GhcPs)) } instance CommentExtraction RuleBinder where nodeComments :: RuleBinder -> NodeComments nodeComments RuleBinder {} = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] instance Pretty RuleBinder where pretty' :: RuleBinder -> Printer () pretty' RuleBinder {signature :: RuleBinder -> Maybe (WithComments (HsType GhcPs)) signature = Maybe (WithComments (HsType GhcPs)) Nothing, WithComments PrefixName name :: RuleBinder -> WithComments PrefixName name :: WithComments PrefixName ..} = WithComments PrefixName -> Printer () forall a. Pretty a => a -> Printer () pretty WithComments PrefixName name pretty' RuleBinder {signature :: RuleBinder -> Maybe (WithComments (HsType GhcPs)) signature = Just WithComments (HsType GhcPs) sig, WithComments PrefixName name :: RuleBinder -> WithComments PrefixName name :: WithComments PrefixName ..} = Printer () -> Printer () forall a. Printer a -> Printer a parens (Printer () -> Printer ()) -> Printer () -> Printer () forall a b. (a -> b) -> a -> b $ [Printer ()] -> Printer () spaced [WithComments PrefixName -> Printer () forall a. Pretty a => a -> Printer () pretty WithComments PrefixName name, HasCallStack => String -> Printer () String -> Printer () string String "::", WithComments (HsType GhcPs) -> Printer () forall a. Pretty a => a -> Printer () pretty WithComments (HsType GhcPs) sig] mkRuleBinder :: GHC.RuleBndr GHC.GhcPs -> RuleBinder mkRuleBinder :: RuleBndr GhcPs -> RuleBinder mkRuleBinder (GHC.RuleBndr XCRuleBndr GhcPs _ LIdP GhcPs n) = RuleBinder {Maybe (WithComments (HsType GhcPs)) WithComments PrefixName forall {a}. Maybe a name :: WithComments PrefixName signature :: Maybe (WithComments (HsType GhcPs)) signature :: forall {a}. Maybe a name :: WithComments PrefixName ..} where signature :: Maybe a signature = Maybe a forall {a}. Maybe a Nothing name :: WithComments PrefixName name = GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName forall l a. CommentExtraction l => GenLocated l a -> WithComments a fromGenLocated (GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName) -> GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName forall a b. (a -> b) -> a -> b $ (RdrName -> PrefixName) -> GenLocated SrcSpanAnnN RdrName -> GenLocated SrcSpanAnnN PrefixName forall a b. (a -> b) -> GenLocated SrcSpanAnnN a -> GenLocated SrcSpanAnnN b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap RdrName -> PrefixName mkPrefixName LIdP GhcPs GenLocated SrcSpanAnnN RdrName n mkRuleBinder (GHC.RuleBndrSig XRuleBndrSig GhcPs _ LIdP GhcPs n GHC.HsPS {XHsPS GhcPs LHsType GhcPs hsps_ext :: XHsPS GhcPs hsps_body :: LHsType GhcPs hsps_body :: forall pass. HsPatSigType pass -> LHsType pass hsps_ext :: forall pass. HsPatSigType pass -> XHsPS pass ..}) = RuleBinder {Maybe (WithComments (HsType GhcPs)) WithComments PrefixName name :: WithComments PrefixName signature :: Maybe (WithComments (HsType GhcPs)) signature :: Maybe (WithComments (HsType GhcPs)) name :: WithComments PrefixName ..} where signature :: Maybe (WithComments (HsType GhcPs)) signature = WithComments (HsType GhcPs) -> Maybe (WithComments (HsType GhcPs)) forall a. a -> Maybe a Just (WithComments (HsType GhcPs) -> Maybe (WithComments (HsType GhcPs))) -> WithComments (HsType GhcPs) -> Maybe (WithComments (HsType GhcPs)) forall a b. (a -> b) -> a -> b $ GenLocated SrcSpanAnnA (HsType GhcPs) -> WithComments (HsType GhcPs) forall l a. CommentExtraction l => GenLocated l a -> WithComments a fromGenLocated LHsType GhcPs GenLocated SrcSpanAnnA (HsType GhcPs) hsps_body name :: WithComments PrefixName name = GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName forall l a. CommentExtraction l => GenLocated l a -> WithComments a fromGenLocated (GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName) -> GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName forall a b. (a -> b) -> a -> b $ (RdrName -> PrefixName) -> GenLocated SrcSpanAnnN RdrName -> GenLocated SrcSpanAnnN PrefixName forall a b. (a -> b) -> GenLocated SrcSpanAnnN a -> GenLocated SrcSpanAnnN b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap RdrName -> PrefixName mkPrefixName LIdP GhcPs GenLocated SrcSpanAnnN RdrName n