hindent-6.3.0: src/HIndent/Ast/Declaration/Annotation.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE RecordWildCards #-}
module HIndent.Ast.Declaration.Annotation
( Annotation
, mkAnnotation
) where
import HIndent.Ast.Declaration.Annotation.Provenance
import {-# SOURCE #-} HIndent.Ast.Expression (Expression, mkExpression)
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 Annotation = Annotation
{ provenance :: Provenance
, expr :: WithComments Expression
}
instance CommentExtraction Annotation where
nodeComments Annotation {} = NodeComments [] [] []
instance Pretty Annotation where
pretty' Annotation {..} =
spaced [string "{-# ANN", pretty provenance, pretty expr, string "#-}"]
mkAnnotation :: GHC.AnnDecl GHC.GhcPs -> Annotation
#if MIN_VERSION_ghc_lib_parser(9, 6, 1)
mkAnnotation (GHC.HsAnnotation _ prov expression) = Annotation {..}
where
provenance = mkProvenance prov
expr = mkExpression <$> fromGenLocated expression
#else
mkAnnotation (GHC.HsAnnotation _ _ prov expression) = Annotation {..}
where
provenance = mkProvenance prov
expr = mkExpression <$> fromGenLocated expression
#endif