{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} module Ormolu.Printer.Meat.Declaration.Annotation ( p_annDecl, ) where import GHC.Hs.Decls import GHC.Hs.Extension import Ormolu.Printer.Combinators import Ormolu.Printer.Meat.Common import Ormolu.Printer.Meat.Declaration.Value p_annDecl :: AnnDecl GhcPs -> R () p_annDecl :: AnnDecl GhcPs -> R () p_annDecl (HsAnnotation XHsAnnotation GhcPs NoExtField SourceText _ AnnProvenance (IdP GhcPs) annProv Located (HsExpr GhcPs) expr) = Text -> R () -> R () pragma Text "ANN" (R () -> R ()) -> (R () -> R ()) -> R () -> R () forall b c a. (b -> c) -> (a -> b) -> a -> c . R () -> R () inci (R () -> R ()) -> R () -> R () forall a b. (a -> b) -> a -> b $ do AnnProvenance (IdP GhcPs) -> R () p_annProv AnnProvenance (IdP GhcPs) annProv R () breakpoint Located (HsExpr GhcPs) -> (HsExpr GhcPs -> R ()) -> R () forall a. Located a -> (a -> R ()) -> R () located Located (HsExpr GhcPs) expr HsExpr GhcPs -> R () p_hsExpr p_annProv :: AnnProvenance (IdP GhcPs) -> R () p_annProv :: AnnProvenance (IdP GhcPs) -> R () p_annProv = \case ValueAnnProvenance Located (IdP GhcPs) name -> Located RdrName -> R () p_rdrName Located (IdP GhcPs) Located RdrName name TypeAnnProvenance Located (IdP GhcPs) name -> Text -> R () txt Text "type" R () -> R () -> R () forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> R () space R () -> R () -> R () forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> Located RdrName -> R () p_rdrName Located (IdP GhcPs) Located RdrName name AnnProvenance (IdP GhcPs) ModuleAnnProvenance -> Text -> R () txt Text "module"