{-# LANGUAGE CPP #-} {-# LANGUAGE RecordWildCards #-} module HIndent.Ast.Declaration.Data.NewOrData ( NewOrData , mkNewOrData ) where import HIndent.Ast.NodeComments import qualified HIndent.GhcLibParserWrapper.GHC.Hs as GHC import {-# SOURCE #-} HIndent.Pretty import HIndent.Pretty.Combinators import HIndent.Pretty.NodeComments data NewOrData = Newtype | Data instance CommentExtraction NewOrData where nodeComments :: NewOrData -> NodeComments nodeComments NewOrData Newtype = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] nodeComments NewOrData Data = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] instance Pretty NewOrData where pretty' :: NewOrData -> Printer () pretty' NewOrData Newtype = HasCallStack => String -> Printer () String -> Printer () string String "newtype" pretty' NewOrData Data = HasCallStack => String -> Printer () String -> Printer () string String "data" mkNewOrData :: GHC.HsDataDefn GHC.GhcPs -> NewOrData #if MIN_VERSION_ghc_lib_parser(9, 6, 0) mkNewOrData :: HsDataDefn GhcPs -> NewOrData mkNewOrData GHC.HsDataDefn {HsDeriving GhcPs Maybe (LHsContext GhcPs) Maybe (XRec GhcPs CType) Maybe (LHsKind GhcPs) XCHsDataDefn GhcPs DataDefnCons (LConDecl GhcPs) dd_ext :: XCHsDataDefn GhcPs dd_ctxt :: Maybe (LHsContext GhcPs) dd_cType :: Maybe (XRec GhcPs CType) dd_kindSig :: Maybe (LHsKind GhcPs) dd_cons :: DataDefnCons (LConDecl GhcPs) dd_derivs :: HsDeriving GhcPs dd_derivs :: forall pass. HsDataDefn pass -> HsDeriving pass dd_cons :: forall pass. HsDataDefn pass -> DataDefnCons (LConDecl pass) dd_kindSig :: forall pass. HsDataDefn pass -> Maybe (LHsKind pass) dd_cType :: forall pass. HsDataDefn pass -> Maybe (XRec pass CType) dd_ctxt :: forall pass. HsDataDefn pass -> Maybe (LHsContext pass) dd_ext :: forall pass. HsDataDefn pass -> XCHsDataDefn pass ..} | GHC.NewTypeCon LConDecl GhcPs _ <- DataDefnCons (LConDecl GhcPs) dd_cons = NewOrData Newtype | GHC.DataTypeCons Bool _ [LConDecl GhcPs] _ <- DataDefnCons (LConDecl GhcPs) dd_cons = NewOrData Data #else mkNewOrData GHC.HsDataDefn {..} | GHC.NewType <- dd_ND = Newtype | GHC.DataType <- dd_ND = Data #endif