{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TransformListComp #-}
{-# LANGUAGE TypeFamilies #-}
module Haddock.Backends.Xhtml.Decl
( ppDecl
, ppOrphanInstances
) where
import Data.Foldable (toList)
import Data.List (intersperse, sort)
import Data.List.NonEmpty (NonEmpty (..))
import qualified Data.Map as Map
import qualified Data.Maybe as Maybe
import GHC hiding (LexicalFixity (..), fromMaybeContext)
import GHC.Core.Type (Specificity (..))
import GHC.Data.BooleanFormula
import GHC.Exts hiding (toList)
import GHC.Types.Name
import GHC.Types.Name.Reader (rdrNameOcc)
import Text.XHtml hiding (name, p, quote, title)
import Haddock.Backends.Xhtml.DocMarkup
import Haddock.Backends.Xhtml.Layout
import Haddock.Backends.Xhtml.Names
import Haddock.Backends.Xhtml.Types
import Haddock.Backends.Xhtml.Utils
import Haddock.Doc (combineDocumentation)
import Haddock.GhcUtils
import Haddock.Types
ppDecl
:: Bool
-> LinksInfo
-> LHsDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> DocForDecl DocName
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> [(DocName, DocForDecl DocName)]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppDecl :: Bool
-> LinksInfo
-> LHsDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> DocForDecl DocName
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> [(DocName, DocForDecl DocName)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppDecl Bool
summ LinksInfo
links (L SrcSpanAnnA
loc HsDecl DocNameI
decl) [(HsDecl DocNameI, DocForDecl DocName)]
pats (Documentation DocName
mbDoc, FnArgsDoc DocName
fnArgsDoc) [DocInstance DocNameI]
instances [(DocName, Fixity)]
fixities [(DocName, DocForDecl DocName)]
subdocs Bool
splice Bool
unicode Maybe String
pkg Qualification
qual = case HsDecl DocNameI
decl of
TyClD XTyClD DocNameI
_ (FamDecl XFamDecl DocNameI
_ FamilyDecl DocNameI
d) -> Bool
-> Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> SrcSpan
-> Documentation DocName
-> FamilyDecl DocNameI
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFamDecl Bool
summ Bool
False LinksInfo
links [DocInstance DocNameI]
instances [(DocName, Fixity)]
fixities (SrcSpanAnnA -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA SrcSpanAnnA
loc) Documentation DocName
mbDoc FamilyDecl DocNameI
d Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
TyClD XTyClD DocNameI
_ d :: TyClDecl DocNameI
d@(DataDecl{}) -> Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> [(DocName, DocForDecl DocName)]
-> SrcSpan
-> Documentation DocName
-> TyClDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppDataDecl Bool
summ LinksInfo
links [DocInstance DocNameI]
instances [(DocName, Fixity)]
fixities [(DocName, DocForDecl DocName)]
subdocs (SrcSpanAnnA -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA SrcSpanAnnA
loc) Documentation DocName
mbDoc TyClDecl DocNameI
d [(HsDecl DocNameI, DocForDecl DocName)]
pats Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
TyClD XTyClD DocNameI
_ d :: TyClDecl DocNameI
d@(SynDecl{}) -> Bool
-> LinksInfo
-> [(DocName, Fixity)]
-> SrcSpan
-> DocForDecl DocName
-> TyClDecl DocNameI
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppTySyn Bool
summ LinksInfo
links [(DocName, Fixity)]
fixities (SrcSpanAnnA -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA SrcSpanAnnA
loc) (Documentation DocName
mbDoc, FnArgsDoc DocName
fnArgsDoc) TyClDecl DocNameI
d Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
TyClD XTyClD DocNameI
_ d :: TyClDecl DocNameI
d@(ClassDecl{}) -> Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> SrcSpan
-> Documentation DocName
-> [(DocName, DocForDecl DocName)]
-> TyClDecl DocNameI
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppClassDecl Bool
summ LinksInfo
links [DocInstance DocNameI]
instances [(DocName, Fixity)]
fixities (SrcSpanAnnA -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA SrcSpanAnnA
loc) Documentation DocName
mbDoc [(DocName, DocForDecl DocName)]
subdocs TyClDecl DocNameI
d Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
SigD XSigD DocNameI
_ (TypeSig XTypeSig DocNameI
_ [LIdP DocNameI]
lnames LHsSigWcType DocNameI
lty) ->
Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> [GenLocated SrcSpanAnnN DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppLFunSig
Bool
summ
LinksInfo
links
(SrcSpanAnnA -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA SrcSpanAnnA
loc)
(Documentation DocName
mbDoc, FnArgsDoc DocName
fnArgsDoc)
[LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames
(LHsSigWcType DocNameI -> LHsSigType DocNameI
dropWildCardsI LHsSigWcType DocNameI
lty)
[(DocName, Fixity)]
fixities
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
SigD XSigD DocNameI
_ (PatSynSig XPatSynSig DocNameI
_ [LIdP DocNameI]
lnames LHsSigType DocNameI
lty) ->
Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> [GenLocated SrcSpanAnnN DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppLPatSig
Bool
summ
LinksInfo
links
(SrcSpanAnnA -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA SrcSpanAnnA
loc)
(Documentation DocName
mbDoc, FnArgsDoc DocName
fnArgsDoc)
[LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames
LHsSigType DocNameI
lty
[(DocName, Fixity)]
fixities
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
ForD XForD DocNameI
_ ForeignDecl DocNameI
d -> Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> ForeignDecl DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFor Bool
summ LinksInfo
links (SrcSpanAnnA -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA SrcSpanAnnA
loc) (Documentation DocName
mbDoc, FnArgsDoc DocName
fnArgsDoc) ForeignDecl DocNameI
d [(DocName, Fixity)]
fixities Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
InstD XInstD DocNameI
_ InstDecl DocNameI
_ -> Html
noHtml
DerivD XDerivD DocNameI
_ DerivDecl DocNameI
_ -> Html
noHtml
HsDecl DocNameI
_ -> String -> Html
forall a. HasCallStack => String -> a
error String
"declaration not supported by ppDecl"
ppLFunSig
:: Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> [LocatedN DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppLFunSig :: Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> [GenLocated SrcSpanAnnN DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppLFunSig Bool
summary LinksInfo
links SrcSpan
loc DocForDecl DocName
doc [GenLocated SrcSpanAnnN DocName]
lnames LHsSigType DocNameI
lty [(DocName, Fixity)]
fixities Bool
splice Bool
unicode Maybe String
pkg Qualification
qual =
Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFunSig
Bool
summary
LinksInfo
links
SrcSpan
loc
Html
noHtml
DocForDecl DocName
doc
((GenLocated SrcSpanAnnN DocName -> DocName)
-> [GenLocated SrcSpanAnnN DocName] -> [DocName]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc [GenLocated SrcSpanAnnN DocName]
lnames)
LHsSigType DocNameI
lty
[(DocName, Fixity)]
fixities
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
ppFunSig
:: Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppFunSig :: Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFunSig Bool
summary LinksInfo
links SrcSpan
loc Html
leader DocForDecl DocName
doc [DocName]
docnames LHsSigType DocNameI
typ [(DocName, Fixity)]
fixities Bool
splice Bool
unicode Maybe String
pkg Qualification
qual =
Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> [(DocName, Fixity)]
-> (HsSigType DocNameI, Html)
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> HideEmptyContexts
-> Html
ppSigLike
Bool
summary
LinksInfo
links
SrcSpan
loc
Html
leader
DocForDecl DocName
doc
[DocName]
docnames
[(DocName, Fixity)]
fixities
(GenLocated SrcSpanAnnA (HsSigType DocNameI) -> HsSigType DocNameI
forall l e. GenLocated l e -> e
unLoc LHsSigType DocNameI
GenLocated SrcSpanAnnA (HsSigType DocNameI)
typ, Html
pp_typ)
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
HideEmptyContexts
HideEmptyContexts
where
pp_typ :: Html
pp_typ = Bool
-> Qualification
-> HideEmptyContexts
-> LHsSigType DocNameI
-> Html
ppLSigType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts LHsSigType DocNameI
typ
ppLPatSig
:: Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> [LocatedN DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppLPatSig :: Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> [GenLocated SrcSpanAnnN DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppLPatSig Bool
summary LinksInfo
links SrcSpan
loc DocForDecl DocName
doc [GenLocated SrcSpanAnnN DocName]
lnames LHsSigType DocNameI
typ [(DocName, Fixity)]
fixities Bool
splice Bool
unicode Maybe String
pkg Qualification
qual =
Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> [(DocName, Fixity)]
-> (HsSigType DocNameI, Html)
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> HideEmptyContexts
-> Html
ppSigLike
Bool
summary
LinksInfo
links
SrcSpan
loc
(String -> Html
keyword String
"pattern")
DocForDecl DocName
doc
((GenLocated SrcSpanAnnN DocName -> DocName)
-> [GenLocated SrcSpanAnnN DocName] -> [DocName]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc [GenLocated SrcSpanAnnN DocName]
lnames)
[(DocName, Fixity)]
fixities
(GenLocated SrcSpanAnnA (HsSigType DocNameI) -> HsSigType DocNameI
forall l e. GenLocated l e -> e
unLoc LHsSigType DocNameI
GenLocated SrcSpanAnnA (HsSigType DocNameI)
typ, Html
pp_typ)
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
(LHsSigType DocNameI -> HideEmptyContexts
patSigContext LHsSigType DocNameI
typ)
where
pp_typ :: Html
pp_typ = Bool -> Qualification -> LHsSigType DocNameI -> Html
ppPatSigType Bool
unicode Qualification
qual LHsSigType DocNameI
typ
ppSigLike
:: Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> [(DocName, Fixity)]
-> (HsSigType DocNameI, Html)
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> HideEmptyContexts
-> Html
ppSigLike :: Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> [(DocName, Fixity)]
-> (HsSigType DocNameI, Html)
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> HideEmptyContexts
-> Html
ppSigLike
Bool
summary
LinksInfo
links
SrcSpan
loc
Html
leader
DocForDecl DocName
doc
[DocName]
docnames
[(DocName, Fixity)]
fixities
(HsSigType DocNameI
typ, Html
pp_typ)
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
HideEmptyContexts
emptyCtxts =
Bool
-> LinksInfo
-> SrcSpan
-> [DocName]
-> HsSigType DocNameI
-> DocForDecl DocName
-> (Html, Html, Html)
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> HideEmptyContexts
-> Html
ppTypeOrFunSig
Bool
summary
LinksInfo
links
SrcSpan
loc
[DocName]
docnames
HsSigType DocNameI
typ
DocForDecl DocName
doc
( Html -> Html
addFixities (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ Html
leader Html -> Html -> Html
<+> Bool -> [OccName] -> Html -> Bool -> Html
ppTypeSig Bool
summary [OccName]
occnames Html
pp_typ Bool
unicode
, (Html
leader Html -> Html -> Html
<+>) (Html -> Html) -> ([Html] -> Html) -> [Html] -> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Html -> Html
addFixities (Html -> Html) -> ([Html] -> Html) -> [Html] -> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Html] -> Html
forall a. HTML a => [a] -> Html
concatHtml ([Html] -> Html) -> ([Html] -> [Html]) -> [Html] -> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Html -> [Html] -> [Html]
punctuate Html
comma ([Html] -> Html) -> [Html] -> Html
forall a b. (a -> b) -> a -> b
$ (OccName -> Html) -> [OccName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> OccName -> Html
ppBinder Bool
False) [OccName]
occnames
, Bool -> Html
dcolon Bool
unicode
)
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
HideEmptyContexts
emptyCtxts
where
occnames :: [OccName]
occnames = (DocName -> OccName) -> [DocName] -> [OccName]
forall a b. (a -> b) -> [a] -> [b]
map (Name -> OccName
nameOccName (Name -> OccName) -> (DocName -> Name) -> DocName -> OccName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocName -> Name
forall a. NamedThing a => a -> Name
getName) [DocName]
docnames
addFixities :: Html -> Html
addFixities Html
html
| Bool
summary = Html
html
| Bool
otherwise = Html
html Html -> Html -> Html
<+> [(DocName, Fixity)] -> Qualification -> Html
ppFixities [(DocName, Fixity)]
fixities Qualification
qual
ppTypeOrFunSig
:: Bool
-> LinksInfo
-> SrcSpan
-> [DocName]
-> HsSigType DocNameI
-> DocForDecl DocName
-> (Html, Html, Html)
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> HideEmptyContexts
-> Html
ppTypeOrFunSig :: Bool
-> LinksInfo
-> SrcSpan
-> [DocName]
-> HsSigType DocNameI
-> DocForDecl DocName
-> (Html, Html, Html)
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> HideEmptyContexts
-> Html
ppTypeOrFunSig
Bool
summary
LinksInfo
links
SrcSpan
loc
[DocName]
docnames
HsSigType DocNameI
typ
(Documentation DocName
doc, FnArgsDoc DocName
argDocs)
(Html
pref1, Html
pref2, Html
sep)
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
HideEmptyContexts
emptyCtxts
| Bool
summary = Html
pref1
| FnArgsDoc DocName -> Bool
forall k a. Map k a -> Bool
Map.null FnArgsDoc DocName
argDocs = LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice DocName
docName Html
pref1 Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Maybe Name
-> Maybe String -> Qualification -> Documentation DocName -> Html
docSection Maybe Name
curname Maybe String
pkg Qualification
qual Documentation DocName
doc
| Bool
otherwise =
LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice DocName
docName Html
pref2
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Maybe String -> Qualification -> [SubDecl] -> Html
subArguments Maybe String
pkg Qualification
qual (Bool
-> Qualification
-> HsSigType DocNameI
-> FnArgsDoc DocName
-> [(DocName, DocForDecl DocName)]
-> Html
-> HideEmptyContexts
-> [SubDecl]
ppSubSigLike Bool
unicode Qualification
qual HsSigType DocNameI
typ FnArgsDoc DocName
argDocs [] Html
sep HideEmptyContexts
emptyCtxts)
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Maybe Name
-> Maybe String -> Qualification -> Documentation DocName -> Html
docSection Maybe Name
curname Maybe String
pkg Qualification
qual Documentation DocName
doc
where
curname :: Maybe Name
curname = DocName -> Name
forall a. NamedThing a => a -> Name
getName (DocName -> Name) -> Maybe DocName -> Maybe Name
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> [DocName] -> Maybe DocName
forall a. [a] -> Maybe a
Maybe.listToMaybe [DocName]
docnames
docName :: DocName
docName =
case [DocName] -> Maybe DocName
forall a. [a] -> Maybe a
Maybe.listToMaybe [DocName]
docnames of
Maybe DocName
Nothing -> String -> DocName
forall a. HasCallStack => String -> a
error String
"No docnames. An invariant was broken. Please report this to the Haddock project"
Just DocName
hd -> DocName
hd
ppSubSigLike
:: Unicode
-> Qualification
-> HsSigType DocNameI
-> FnArgsDoc DocName
-> [(DocName, DocForDecl DocName)]
-> Html
-> HideEmptyContexts
-> [SubDecl]
ppSubSigLike :: Bool
-> Qualification
-> HsSigType DocNameI
-> FnArgsDoc DocName
-> [(DocName, DocForDecl DocName)]
-> Html
-> HideEmptyContexts
-> [SubDecl]
ppSubSigLike Bool
unicode Qualification
qual HsSigType DocNameI
typ FnArgsDoc DocName
argDocs [(DocName, DocForDecl DocName)]
subdocs Html
sep HideEmptyContexts
emptyCtxts = Int -> Html -> HsSigType DocNameI -> [SubDecl]
do_sig_args Int
0 Html
sep HsSigType DocNameI
typ
where
do_sig_args :: Int -> Html -> HsSigType DocNameI -> [SubDecl]
do_sig_args :: Int -> Html -> HsSigType DocNameI -> [SubDecl]
do_sig_args Int
n Html
leader (HsSig{sig_bndrs :: forall pass. HsSigType pass -> HsOuterSigTyVarBndrs pass
sig_bndrs = HsOuterSigTyVarBndrs DocNameI
outer_bndrs, sig_body :: forall pass. HsSigType pass -> LHsType pass
sig_body = XRec DocNameI (HsType DocNameI)
ltype}) =
case HsOuterSigTyVarBndrs DocNameI
outer_bndrs of
HsOuterExplicit{hso_bndrs :: forall flag pass.
HsOuterTyVarBndrs flag pass -> [LHsTyVarBndr flag (NoGhcTc pass)]
hso_bndrs = [LHsTyVarBndr Specificity (NoGhcTc DocNameI)]
bndrs} -> Int -> Html -> XRec DocNameI (HsType DocNameI) -> [SubDecl]
do_largs Int
n ([GenLocated SrcSpanAnnA (HsTyVarBndr Specificity DocNameI)] -> Html
leader' [LHsTyVarBndr Specificity (NoGhcTc DocNameI)]
[GenLocated SrcSpanAnnA (HsTyVarBndr Specificity DocNameI)]
bndrs) XRec DocNameI (HsType DocNameI)
ltype
HsOuterImplicit{} -> Int -> Html -> XRec DocNameI (HsType DocNameI) -> [SubDecl]
do_largs Int
n Html
leader XRec DocNameI (HsType DocNameI)
ltype
where
leader' :: [GenLocated SrcSpanAnnA (HsTyVarBndr Specificity DocNameI)] -> Html
leader' [GenLocated SrcSpanAnnA (HsTyVarBndr Specificity DocNameI)]
bndrs = Html
leader Html -> Html -> Html
<+> Bool -> Qualification -> HsForAllTelescope DocNameI -> Html
ppForAllPart Bool
unicode Qualification
qual ([LHsTyVarBndr Specificity DocNameI] -> HsForAllTelescope DocNameI
mkHsForAllInvisTeleI [LHsTyVarBndr Specificity DocNameI]
[GenLocated SrcSpanAnnA (HsTyVarBndr Specificity DocNameI)]
bndrs)
argDoc :: Int -> Maybe (MDoc DocName)
argDoc Int
n = Int -> FnArgsDoc DocName -> Maybe (MDoc DocName)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup Int
n FnArgsDoc DocName
argDocs
do_largs :: Int -> Html -> LHsType DocNameI -> [SubDecl]
do_largs :: Int -> Html -> XRec DocNameI (HsType DocNameI) -> [SubDecl]
do_largs Int
n Html
leader (L SrcSpanAnnA
_ HsType DocNameI
t) = Int -> Html -> HsType DocNameI -> [SubDecl]
do_args Int
n Html
leader HsType DocNameI
t
do_args :: Int -> Html -> HsType DocNameI -> [SubDecl]
do_args :: Int -> Html -> HsType DocNameI -> [SubDecl]
do_args Int
n Html
leader (HsForAllTy XForAllTy DocNameI
_ HsForAllTelescope DocNameI
tele XRec DocNameI (HsType DocNameI)
ltype) =
Int -> Html -> XRec DocNameI (HsType DocNameI) -> [SubDecl]
do_largs Int
n Html
leader' XRec DocNameI (HsType DocNameI)
ltype
where
leader' :: Html
leader' = Html
leader Html -> Html -> Html
<+> Bool -> Qualification -> HsForAllTelescope DocNameI -> Html
ppForAllPart Bool
unicode Qualification
qual HsForAllTelescope DocNameI
tele
do_args Int
n Html
leader (HsQualTy XQualTy DocNameI
_ LHsContext DocNameI
lctxt XRec DocNameI (HsType DocNameI)
ltype)
| [GenLocated SrcSpanAnnA (HsType DocNameI)] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null (GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)]
-> [GenLocated SrcSpanAnnA (HsType DocNameI)]
forall l e. GenLocated l e -> e
unLoc LHsContext DocNameI
GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)]
lctxt) =
Int -> Html -> XRec DocNameI (HsType DocNameI) -> [SubDecl]
do_largs Int
n Html
leader XRec DocNameI (HsType DocNameI)
ltype
| Bool
otherwise =
(Html
leader Html -> Html -> Html
<+> LHsContext DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppLContextNoArrow LHsContext DocNameI
lctxt Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts, Maybe (MDoc DocName)
forall a. Maybe a
Nothing, [])
SubDecl -> [SubDecl] -> [SubDecl]
forall a. a -> [a] -> [a]
: Int -> Html -> XRec DocNameI (HsType DocNameI) -> [SubDecl]
do_largs Int
n (Bool -> Html
darrow Bool
unicode) XRec DocNameI (HsType DocNameI)
ltype
do_args Int
n Html
leader (HsFunTy XFunTy DocNameI
_ HsArrow DocNameI
_w (L SrcSpanAnnA
_ (HsRecTy XRecTy DocNameI
_ [LConDeclField DocNameI]
fields)) XRec DocNameI (HsType DocNameI)
r) =
[ (Html
ldr Html -> Html -> Html
<+> Html
html, Maybe (MDoc DocName)
mdoc, [Html]
subs)
| (L SrcSpan
_ ConDeclField DocNameI
field, Html
ldr) <- [GenLocated SrcSpan (ConDeclField DocNameI)]
-> [Html] -> [(GenLocated SrcSpan (ConDeclField DocNameI), Html)]
forall a b. [a] -> [b] -> [(a, b)]
zip [LConDeclField DocNameI]
[GenLocated SrcSpan (ConDeclField DocNameI)]
fields (Html
leader Html -> Html -> Html
<+> Html
gadtOpen Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
: Html -> [Html]
forall a. a -> [a]
repeat Html
gadtComma)
, let (Html
html, Maybe (MDoc DocName)
mdoc, [Html]
subs) = [(DocName, DocForDecl DocName)]
-> Bool -> Qualification -> ConDeclField DocNameI -> SubDecl
ppSideBySideField [(DocName, DocForDecl DocName)]
subdocs Bool
unicode Qualification
qual ConDeclField DocNameI
field
]
[SubDecl] -> [SubDecl] -> [SubDecl]
forall a. [a] -> [a] -> [a]
++ Int -> Html -> XRec DocNameI (HsType DocNameI) -> [SubDecl]
do_largs (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) (Html
gadtEnd Html -> Html -> Html
<+> Bool -> Html
arrow Bool
unicode) XRec DocNameI (HsType DocNameI)
r
do_args Int
n Html
leader (HsFunTy XFunTy DocNameI
_ HsArrow DocNameI
_w XRec DocNameI (HsType DocNameI)
lt XRec DocNameI (HsType DocNameI)
r) =
(Html
leader Html -> Html -> Html
<+> Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLFunLhType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts XRec DocNameI (HsType DocNameI)
lt, Int -> Maybe (MDoc DocName)
argDoc Int
n, [])
SubDecl -> [SubDecl] -> [SubDecl]
forall a. a -> [a] -> [a]
: Int -> Html -> XRec DocNameI (HsType DocNameI) -> [SubDecl]
do_largs (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) (Bool -> Html
arrow Bool
unicode) XRec DocNameI (HsType DocNameI)
r
do_args Int
n Html
leader HsType DocNameI
t =
[(Html
leader Html -> Html -> Html
<+> Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts HsType DocNameI
t, Int -> Maybe (MDoc DocName)
argDoc Int
n, [])]
gadtComma :: Html
gadtComma = [Html] -> Html
forall a. HTML a => [a] -> Html
concatHtml (Int -> Html -> [Html]
forall a. Int -> a -> [a]
replicate (if Bool
unicode then Int
2 else Int
3) Html
spaceHtml) Html -> Html -> Html
forall a. Semigroup a => a -> a -> a
<> String -> Html
forall a. HTML a => a -> Html
toHtml String
","
gadtEnd :: Html
gadtEnd = [Html] -> Html
forall a. HTML a => [a] -> Html
concatHtml (Int -> Html -> [Html]
forall a. Int -> a -> [a]
replicate (if Bool
unicode then Int
2 else Int
3) Html
spaceHtml) Html -> Html -> Html
forall a. Semigroup a => a -> a -> a
<> String -> Html
forall a. HTML a => a -> Html
toHtml String
"}"
gadtOpen :: Html
gadtOpen = String -> Html
forall a. HTML a => a -> Html
toHtml String
"{"
ppFixities :: [(DocName, Fixity)] -> Qualification -> Html
ppFixities :: [(DocName, Fixity)] -> Qualification -> Html
ppFixities [] Qualification
_ = Html
noHtml
ppFixities [(DocName, Fixity)]
fs Qualification
qual = (Html -> Html -> Html) -> [Html] -> Html
forall a. (a -> a -> a) -> [a] -> a
forall (t :: Type -> Type) a.
Foldable t =>
(a -> a -> a) -> t a -> a
foldr1 Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
(+++) ((([DocName], Int, String) -> Html)
-> [([DocName], Int, String)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map ([DocName], Int, String) -> Html
ppFix [([DocName], Int, String)]
uniq_fs) Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
rightEdge
where
ppFix :: ([DocName], Int, String) -> Html
ppFix ([DocName]
ns, Int
p, String
d) =
Html -> Html
thespan
(Html -> Html) -> [HtmlAttr] -> Html -> Html
forall a. ADDATTRS a => a -> [HtmlAttr] -> a
! [String -> HtmlAttr
theclass String
"fixity"]
(Html -> Html) -> Html -> Html
forall a b. HTML a => (Html -> b) -> a -> b
<< (String -> Html
forall a. HTML a => a -> Html
toHtml String
d Html -> Html -> Html
<+> String -> Html
forall a. HTML a => a -> Html
toHtml (Int -> String
forall a. Show a => a -> String
show Int
p) Html -> Html -> Html
<+> [DocName] -> Html
ppNames [DocName]
ns)
ppDir :: FixityDirection -> String
ppDir FixityDirection
InfixR = String
"infixr"
ppDir FixityDirection
InfixL = String
"infixl"
ppDir FixityDirection
InfixN = String
"infix"
ppNames :: [DocName] -> Html
ppNames = case [(DocName, Fixity)]
fs of
(DocName, Fixity)
_ : [] -> Html -> [DocName] -> Html
forall a b. a -> b -> a
const Html
noHtml
[(DocName, Fixity)]
_ -> [Html] -> Html
forall a. HTML a => [a] -> Html
concatHtml ([Html] -> Html) -> ([DocName] -> [Html]) -> [DocName] -> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
intersperse (String -> Html
stringToHtml String
", ") ([Html] -> [Html]) -> ([DocName] -> [Html]) -> [DocName] -> [Html]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocName -> Html) -> [DocName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
qual Notation
Infix Bool
False)
uniq_fs :: [([DocName], Int, String)]
uniq_fs =
[ ([DocName]
n, [Int] -> Int
forall a. Eq a => [a] -> a
the [Int]
p, [String] -> String
forall a. Eq a => [a] -> a
the [String]
d')
| (DocName
n, Fixity Int
p FixityDirection
d) <- [(DocName, Fixity)]
fs
, let d' :: String
d' = FixityDirection -> String
ppDir FixityDirection
d
, then group by
(Int, String) -> Down (Int, String)
forall a. a -> Down a
Down (Int
p, String
d')
using
(a -> Down (Int, String)) -> [a] -> [[a]]
((DocName, Int, String) -> Down (Int, String))
-> [(DocName, Int, String)] -> [[(DocName, Int, String)]]
forall {a}. (a -> Down (Int, String)) -> [a] -> [[a]]
forall b a. Ord b => (a -> b) -> [a] -> [[a]]
groupWith
]
rightEdge :: Html
rightEdge = Html -> Html
thespan (Html -> Html) -> [HtmlAttr] -> Html -> Html
forall a. ADDATTRS a => a -> [HtmlAttr] -> a
! [String -> HtmlAttr
theclass String
"rightedge"] (Html -> Html) -> Html -> Html
forall a b. HTML a => (Html -> b) -> a -> b
<< Html
noHtml
ppTyVars
:: RenderableBndrFlag flag
=> Unicode
-> Qualification
-> [LHsTyVarBndr flag DocNameI]
-> [Html]
ppTyVars :: forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> [LHsTyVarBndr flag DocNameI] -> [Html]
ppTyVars Bool
unicode Qualification
qual [LHsTyVarBndr flag DocNameI]
tvs = (GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI) -> Html)
-> [GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> Qualification -> HsTyVarBndr flag DocNameI -> Html
forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> HsTyVarBndr flag DocNameI -> Html
ppHsTyVarBndr Bool
unicode Qualification
qual (HsTyVarBndr flag DocNameI -> Html)
-> (GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)
-> HsTyVarBndr flag DocNameI)
-> GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)
-> HsTyVarBndr flag DocNameI
forall l e. GenLocated l e -> e
unLoc) [LHsTyVarBndr flag DocNameI]
[GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)]
tvs
ppFor
:: Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> ForeignDecl DocNameI
-> [(DocName, Fixity)]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppFor :: Bool
-> LinksInfo
-> SrcSpan
-> DocForDecl DocName
-> ForeignDecl DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFor
Bool
summary
LinksInfo
links
SrcSpan
loc
DocForDecl DocName
doc
(ForeignImport XForeignImport DocNameI
_ (L SrcSpanAnnN
_ DocName
name) LHsSigType DocNameI
typ ForeignImport DocNameI
_)
[(DocName, Fixity)]
fixities
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual =
Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFunSig Bool
summary LinksInfo
links SrcSpan
loc Html
noHtml DocForDecl DocName
doc [DocName
name] LHsSigType DocNameI
typ [(DocName, Fixity)]
fixities Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
ppFor Bool
_ LinksInfo
_ SrcSpan
_ DocForDecl DocName
_ ForeignDecl DocNameI
_ [(DocName, Fixity)]
_ Bool
_ Bool
_ Maybe String
_ Qualification
_ = String -> Html
forall a. HasCallStack => String -> a
error String
"ppFor"
ppTySyn
:: Bool
-> LinksInfo
-> [(DocName, Fixity)]
-> SrcSpan
-> DocForDecl DocName
-> TyClDecl DocNameI
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppTySyn :: Bool
-> LinksInfo
-> [(DocName, Fixity)]
-> SrcSpan
-> DocForDecl DocName
-> TyClDecl DocNameI
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppTySyn
Bool
summary
LinksInfo
links
[(DocName, Fixity)]
fixities
SrcSpan
loc
DocForDecl DocName
doc
( SynDecl
{ tcdLName :: forall pass. TyClDecl pass -> LIdP pass
tcdLName = L SrcSpanAnnN
_ DocName
name
, tcdTyVars :: forall pass. TyClDecl pass -> LHsQTyVars pass
tcdTyVars = LHsQTyVars DocNameI
ltyvars
, tcdRhs :: forall pass. TyClDecl pass -> LHsType pass
tcdRhs = XRec DocNameI (HsType DocNameI)
ltype
}
)
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual =
Bool
-> LinksInfo
-> SrcSpan
-> [DocName]
-> HsSigType DocNameI
-> DocForDecl DocName
-> (Html, Html, Html)
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> HideEmptyContexts
-> Html
ppTypeOrFunSig
Bool
summary
LinksInfo
links
SrcSpan
loc
[DocName
name]
HsSigType DocNameI
sig_type
DocForDecl DocName
doc
(Html
full Html -> Html -> Html
<+> Html
fixs, Html
hdr Html -> Html -> Html
<+> Html
fixs, Html
spaceHtml Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
equals)
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
HideEmptyContexts
ShowEmptyToplevelContexts
where
sig_type :: HsSigType DocNameI
sig_type = XRec DocNameI (HsType DocNameI) -> HsSigType DocNameI
mkHsImplicitSigTypeI XRec DocNameI (HsType DocNameI)
ltype
hdr :: Html
hdr =
[Html] -> Html
hsep
( [String -> Html
keyword String
"type", Bool -> OccName -> Html
ppBinder Bool
summary OccName
occ]
[Html] -> [Html] -> [Html]
forall a. [a] -> [a] -> [a]
++ Bool
-> Qualification
-> [LHsTyVarBndr (HsBndrVis DocNameI) DocNameI]
-> [Html]
forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> [LHsTyVarBndr flag DocNameI] -> [Html]
ppTyVars Bool
unicode Qualification
qual (LHsQTyVars DocNameI -> [LHsTyVarBndr (HsBndrVis DocNameI) DocNameI]
forall pass.
LHsQTyVars pass -> [LHsTyVarBndr (HsBndrVis pass) pass]
hsQTvExplicit LHsQTyVars DocNameI
ltyvars)
)
full :: Html
full = Html
hdr Html -> Html -> Html
<+> Html
equals Html -> Html -> Html
<+> Bool -> Qualification -> LHsSigType DocNameI -> Html
ppPatSigType Bool
unicode Qualification
qual (HsSigType DocNameI -> GenLocated SrcSpanAnnA (HsSigType DocNameI)
forall e a. HasAnnotation e => a -> GenLocated e a
noLocA HsSigType DocNameI
sig_type)
occ :: OccName
occ = Name -> OccName
nameOccName (Name -> OccName) -> (DocName -> Name) -> DocName -> OccName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocName -> Name
forall a. NamedThing a => a -> Name
getName (DocName -> OccName) -> DocName -> OccName
forall a b. (a -> b) -> a -> b
$ DocName
name
fixs :: Html
fixs
| Bool
summary = Html
noHtml
| Bool
otherwise = [(DocName, Fixity)] -> Qualification -> Html
ppFixities [(DocName, Fixity)]
fixities Qualification
qual
ppTySyn Bool
_ LinksInfo
_ [(DocName, Fixity)]
_ SrcSpan
_ DocForDecl DocName
_ TyClDecl DocNameI
_ Bool
_ Bool
_ Maybe String
_ Qualification
_ = String -> Html
forall a. HasCallStack => String -> a
error String
"declaration not supported by ppTySyn"
ppTypeSig :: Bool -> [OccName] -> Html -> Unicode -> Html
ppTypeSig :: Bool -> [OccName] -> Html -> Bool -> Html
ppTypeSig Bool
summary [OccName]
nms Html
pp_ty Bool
unicode =
[Html] -> Html
forall a. HTML a => [a] -> Html
concatHtml [Html]
htmlNames Html -> Html -> Html
<+> Bool -> Html
dcolon Bool
unicode Html -> Html -> Html
<+> Html
pp_ty
where
htmlNames :: [Html]
htmlNames = Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
intersperse (String -> Html
stringToHtml String
", ") ([Html] -> [Html]) -> [Html] -> [Html]
forall a b. (a -> b) -> a -> b
$ (OccName -> Html) -> [OccName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> OccName -> Html
ppBinder Bool
summary) [OccName]
nms
ppSimpleSig
:: LinksInfo
-> Splice
-> Unicode
-> Qualification
-> HideEmptyContexts
-> SrcSpan
-> [DocName]
-> HsSigType DocNameI
-> Html
ppSimpleSig :: LinksInfo
-> Bool
-> Bool
-> Qualification
-> HideEmptyContexts
-> SrcSpan
-> [DocName]
-> HsSigType DocNameI
-> Html
ppSimpleSig LinksInfo
links Bool
splice Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts SrcSpan
loc [DocName]
names HsSigType DocNameI
typ =
DocName -> Html -> Html
topDeclElem' DocName
docName (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ Bool -> [OccName] -> Html -> Bool -> Html
ppTypeSig Bool
True [OccName]
occNames Html
ppTyp Bool
unicode
where
topDeclElem' :: DocName -> Html -> Html
topDeclElem' = LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice
ppTyp :: Html
ppTyp = Bool
-> Qualification -> HideEmptyContexts -> HsSigType DocNameI -> Html
ppSigType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts HsSigType DocNameI
typ
occNames :: [OccName]
occNames = (DocName -> OccName) -> [DocName] -> [OccName]
forall a b. (a -> b) -> [a] -> [b]
map DocName -> OccName
forall a. NamedThing a => a -> OccName
getOccName [DocName]
names
docName :: DocName
docName =
case [DocName] -> Maybe DocName
forall a. [a] -> Maybe a
Maybe.listToMaybe [DocName]
names of
Maybe DocName
Nothing -> String -> DocName
forall a. HasCallStack => String -> a
error String
"No names. An invariant was broken. Please report this to the Haddock project"
Just DocName
hd -> DocName
hd
ppFamDecl
:: Bool
-> Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> SrcSpan
-> Documentation DocName
-> FamilyDecl DocNameI
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppFamDecl :: Bool
-> Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> SrcSpan
-> Documentation DocName
-> FamilyDecl DocNameI
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFamDecl Bool
summary Bool
associated LinksInfo
links [DocInstance DocNameI]
instances [(DocName, Fixity)]
fixities SrcSpan
loc Documentation DocName
doc FamilyDecl DocNameI
decl Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
| Bool
summary = Bool
-> Bool -> FamilyDecl DocNameI -> Bool -> Qualification -> Html
ppFamHeader Bool
True Bool
associated FamilyDecl DocNameI
decl Bool
unicode Qualification
qual
| Bool
otherwise = Html
header_ Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Maybe Name
-> Maybe String -> Qualification -> Documentation DocName -> Html
docSection Maybe Name
curname Maybe String
pkg Qualification
qual Documentation DocName
doc Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
instancesBit
where
docname :: DocName
docname = GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc (GenLocated SrcSpanAnnN DocName -> DocName)
-> GenLocated SrcSpanAnnN DocName -> DocName
forall a b. (a -> b) -> a -> b
$ FamilyDecl DocNameI -> LIdP DocNameI
forall pass. FamilyDecl pass -> LIdP pass
fdLName FamilyDecl DocNameI
decl
curname :: Maybe Name
curname = Name -> Maybe Name
forall a. a -> Maybe a
Just (Name -> Maybe Name) -> Name -> Maybe Name
forall a b. (a -> b) -> a -> b
$ DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
docname
header_ :: Html
header_ =
LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice DocName
docname (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$
Bool
-> Bool -> FamilyDecl DocNameI -> Bool -> Qualification -> Html
ppFamHeader Bool
summary Bool
associated FamilyDecl DocNameI
decl Bool
unicode Qualification
qual Html -> Html -> Html
<+> [(DocName, Fixity)] -> Qualification -> Html
ppFixities [(DocName, Fixity)]
fixities Qualification
qual
instancesBit :: Html
instancesBit
| FamilyDecl{fdInfo :: forall pass. FamilyDecl pass -> FamilyInfo pass
fdInfo = ClosedTypeFamily Maybe [LTyFamInstEqn DocNameI]
mb_eqns} <- FamilyDecl DocNameI
decl
, Bool -> Bool
not Bool
summary =
Maybe String -> Qualification -> [SubDecl] -> Html
subEquations Maybe String
pkg Qualification
qual ([SubDecl] -> Html) -> [SubDecl] -> Html
forall a b. (a -> b) -> a -> b
$ (GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))
-> SubDecl)
-> [GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))]
-> [SubDecl]
forall a b. (a -> b) -> [a] -> [b]
map (TyFamInstEqn DocNameI -> SubDecl
FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> SubDecl
ppFamDeclEqn (FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> SubDecl)
-> (GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))
-> FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))
-> GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))
-> SubDecl
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))
-> FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
forall l e. GenLocated l e -> e
unLoc) ([GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))]
-> [SubDecl])
-> [GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))]
-> [SubDecl]
forall a b. (a -> b) -> a -> b
$ [GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))]
-> Maybe
[GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))]
-> [GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))]
forall a. a -> Maybe a -> a
Maybe.fromMaybe [] Maybe [LTyFamInstEqn DocNameI]
Maybe
[GenLocated
SrcSpanAnnA
(FamEqn DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI)))]
mb_eqns
| Bool
otherwise =
LinksInfo
-> InstOrigin DocName
-> [DocInstance DocNameI]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppInstances LinksInfo
links (DocName -> InstOrigin DocName
forall name. name -> InstOrigin name
OriginFamily DocName
docname) [DocInstance DocNameI]
instances Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
ppFamDeclEqn :: TyFamInstEqn DocNameI -> SubDecl
ppFamDeclEqn :: TyFamInstEqn DocNameI -> SubDecl
ppFamDeclEqn
( FamEqn
{ feqn_tycon :: forall pass rhs. FamEqn pass rhs -> LIdP pass
feqn_tycon = L SrcSpanAnnN
_ DocName
n
, feqn_rhs :: forall pass rhs. FamEqn pass rhs -> rhs
feqn_rhs = XRec DocNameI (HsType DocNameI)
rhs
, feqn_pats :: forall pass rhs. FamEqn pass rhs -> HsFamEqnPats pass
feqn_pats = HsFamEqnPats DocNameI
ts
}
) =
( DocName -> HsFamEqnPats DocNameI -> Bool -> Qualification -> Html
ppAppNameTypeArgs DocName
n HsFamEqnPats DocNameI
ts Bool
unicode Qualification
qual
Html -> Html -> Html
<+> Html
equals
Html -> Html -> Html
<+> Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
rhs)
, Maybe (MDoc DocName)
forall a. Maybe a
Nothing
, []
)
ppFamHeader
:: Bool
-> Bool
-> FamilyDecl DocNameI
-> Unicode
-> Qualification
-> Html
Bool
summary
Bool
associated
( FamilyDecl
{ fdInfo :: forall pass. FamilyDecl pass -> FamilyInfo pass
fdInfo = FamilyInfo DocNameI
info
, fdResultSig :: forall pass. FamilyDecl pass -> LFamilyResultSig pass
fdResultSig = L EpAnn NoEpAnns
_ FamilyResultSig DocNameI
result
, fdInjectivityAnn :: forall pass. FamilyDecl pass -> Maybe (LInjectivityAnn pass)
fdInjectivityAnn = Maybe (LInjectivityAnn DocNameI)
injectivity
, fdLName :: forall pass. FamilyDecl pass -> LIdP pass
fdLName = L SrcSpanAnnN
_ DocName
name
, fdTyVars :: forall pass. FamilyDecl pass -> LHsQTyVars pass
fdTyVars = LHsQTyVars DocNameI
tvs
}
)
Bool
unicode
Qualification
qual =
[Html] -> Html
hsep
[ Bool -> FamilyInfo DocNameI -> Html
ppFamilyLeader Bool
associated FamilyInfo DocNameI
info
, Bool
-> Bool
-> Qualification
-> DocName
-> [LHsTyVarBndr (HsBndrVis DocNameI) DocNameI]
-> Html
forall flag.
RenderableBndrFlag flag =>
Bool
-> Bool
-> Qualification
-> DocName
-> [LHsTyVarBndr flag DocNameI]
-> Html
ppAppDocNameTyVarBndrs Bool
summary Bool
unicode Qualification
qual DocName
name (LHsQTyVars DocNameI -> [LHsTyVarBndr (HsBndrVis DocNameI) DocNameI]
forall pass.
LHsQTyVars pass -> [LHsTyVarBndr (HsBndrVis pass) pass]
hsq_explicit LHsQTyVars DocNameI
tvs)
, FamilyResultSig DocNameI -> Bool -> Qualification -> Html
ppResultSig FamilyResultSig DocNameI
result Bool
unicode Qualification
qual
, Html
injAnn
, Html
whereBit
]
where
whereBit :: Html
whereBit = case FamilyInfo DocNameI
info of
ClosedTypeFamily Maybe [LTyFamInstEqn DocNameI]
_ -> String -> Html
keyword String
"where ..."
FamilyInfo DocNameI
_ -> Html
noHtml
injAnn :: Html
injAnn = case Maybe (LInjectivityAnn DocNameI)
injectivity of
Maybe (LInjectivityAnn DocNameI)
Nothing -> Html
noHtml
Just (L EpAnn NoEpAnns
_ (InjectivityAnn XCInjectivityAnn DocNameI
_ LIdP DocNameI
lhs [LIdP DocNameI]
rhs)) ->
[Html] -> Html
hsep
( String -> Html
keyword String
"|"
Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
: Qualification -> Notation -> GenLocated SrcSpanAnnN DocName -> Html
forall l. Qualification -> Notation -> GenLocated l DocName -> Html
ppLDocName Qualification
qual Notation
Raw LIdP DocNameI
GenLocated SrcSpanAnnN DocName
lhs
Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
: Bool -> Html
arrow Bool
unicode
Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
: (GenLocated SrcSpanAnnN DocName -> Html)
-> [GenLocated SrcSpanAnnN DocName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Qualification -> Notation -> GenLocated SrcSpanAnnN DocName -> Html
forall l. Qualification -> Notation -> GenLocated l DocName -> Html
ppLDocName Qualification
qual Notation
Raw) [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
rhs
)
Just LInjectivityAnn DocNameI
_ -> String -> Html
forall a. HasCallStack => String -> a
error String
"ppFamHeader:XInjectivityAnn"
ppFamilyLeader :: Bool -> FamilyInfo DocNameI -> Html
ppFamilyLeader :: Bool -> FamilyInfo DocNameI -> Html
ppFamilyLeader Bool
assoc FamilyInfo DocNameI
info = String -> Html
keyword (String
typ String -> String -> String
forall a. [a] -> [a] -> [a]
++ if Bool
assoc then String
"" else String
" family")
where
typ :: String
typ = case FamilyInfo DocNameI
info of
FamilyInfo DocNameI
OpenTypeFamily -> String
"type"
ClosedTypeFamily Maybe [LTyFamInstEqn DocNameI]
_ -> String
"type"
FamilyInfo DocNameI
DataFamily -> String
"data"
ppResultSig :: FamilyResultSig DocNameI -> Unicode -> Qualification -> Html
ppResultSig :: FamilyResultSig DocNameI -> Bool -> Qualification -> Html
ppResultSig FamilyResultSig DocNameI
result Bool
unicode Qualification
qual = case FamilyResultSig DocNameI
result of
NoSig XNoSig DocNameI
_ -> Html
noHtml
KindSig XCKindSig DocNameI
_ XRec DocNameI (HsType DocNameI)
kind -> Bool -> Html
dcolon Bool
unicode Html -> Html -> Html
<+> Bool -> Qualification -> XRec DocNameI (HsType DocNameI) -> Html
ppLKind Bool
unicode Qualification
qual XRec DocNameI (HsType DocNameI)
kind
TyVarSig XTyVarSig DocNameI
_ (L SrcSpanAnnA
_ HsTyVarBndr () DocNameI
bndr) -> Html
equals Html -> Html -> Html
<+> Bool -> Qualification -> HsTyVarBndr () DocNameI -> Html
forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> HsTyVarBndr flag DocNameI -> Html
ppHsTyVarBndr Bool
unicode Qualification
qual HsTyVarBndr () DocNameI
bndr
ppAssocType
:: Bool
-> LinksInfo
-> DocForDecl DocName
-> LFamilyDecl DocNameI
-> [(DocName, Fixity)]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppAssocType :: Bool
-> LinksInfo
-> DocForDecl DocName
-> LFamilyDecl DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppAssocType Bool
summ LinksInfo
links DocForDecl DocName
doc (L SrcSpan
loc FamilyDecl DocNameI
decl) [(DocName, Fixity)]
fixities Bool
splice Bool
unicode Maybe String
pkg Qualification
qual =
Bool
-> Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> SrcSpan
-> Documentation DocName
-> FamilyDecl DocNameI
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFamDecl Bool
summ Bool
True LinksInfo
links [] [(DocName, Fixity)]
fixities SrcSpan
loc (DocForDecl DocName -> Documentation DocName
forall a b. (a, b) -> a
fst DocForDecl DocName
doc) FamilyDecl DocNameI
decl Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
ppAppDocNameTyVarBndrs
:: RenderableBndrFlag flag
=> Bool
-> Unicode
-> Qualification
-> DocName
-> [LHsTyVarBndr flag DocNameI]
-> Html
ppAppDocNameTyVarBndrs :: forall flag.
RenderableBndrFlag flag =>
Bool
-> Bool
-> Qualification
-> DocName
-> [LHsTyVarBndr flag DocNameI]
-> Html
ppAppDocNameTyVarBndrs Bool
summ Bool
unicode Qualification
qual DocName
n [LHsTyVarBndr flag DocNameI]
vs =
DocName
-> [GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)]
-> (Notation -> DocName -> Html)
-> (GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI) -> Html)
-> Html
forall a.
DocName
-> [a] -> (Notation -> DocName -> Html) -> (a -> Html) -> Html
ppTypeApp DocName
n [LHsTyVarBndr flag DocNameI]
[GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)]
vs Notation -> DocName -> Html
ppDN (Bool -> Qualification -> HsTyVarBndr flag DocNameI -> Html
forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> HsTyVarBndr flag DocNameI -> Html
ppHsTyVarBndr Bool
unicode Qualification
qual (HsTyVarBndr flag DocNameI -> Html)
-> (GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)
-> HsTyVarBndr flag DocNameI)
-> GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnA (HsTyVarBndr flag DocNameI)
-> HsTyVarBndr flag DocNameI
forall l e. GenLocated l e -> e
unLoc)
where
ppDN :: Notation -> DocName -> Html
ppDN Notation
notation = Notation -> Bool -> OccName -> Html
ppBinderFixity Notation
notation Bool
summ (OccName -> Html) -> (DocName -> OccName) -> DocName -> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Name -> OccName
nameOccName (Name -> OccName) -> (DocName -> Name) -> DocName -> OccName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocName -> Name
forall a. NamedThing a => a -> Name
getName
ppBinderFixity :: Notation -> Bool -> OccName -> Html
ppBinderFixity Notation
Infix = Bool -> OccName -> Html
ppBinderInfix
ppBinderFixity Notation
_ = Bool -> OccName -> Html
ppBinder
ppAppNameTypes :: DocName -> [HsType DocNameI] -> Unicode -> Qualification -> Html
ppAppNameTypes :: DocName -> [HsType DocNameI] -> Bool -> Qualification -> Html
ppAppNameTypes DocName
n [HsType DocNameI]
ts Bool
unicode Qualification
qual =
DocName
-> [HsType DocNameI]
-> (Notation -> DocName -> Html)
-> (HsType DocNameI -> Html)
-> Html
forall a.
DocName
-> [a] -> (Notation -> DocName -> Html) -> (a -> Html) -> Html
ppTypeApp DocName
n [HsType DocNameI]
ts (\Notation
p -> Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
qual Notation
p Bool
True) (Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppParendType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts)
ppAppNameTypeArgs :: DocName -> [LHsTypeArg DocNameI] -> Unicode -> Qualification -> Html
ppAppNameTypeArgs :: DocName -> HsFamEqnPats DocNameI -> Bool -> Qualification -> Html
ppAppNameTypeArgs DocName
n args :: HsFamEqnPats DocNameI
args@(HsValArg XValArg DocNameI
_ XRec DocNameI (HsType DocNameI)
_ : HsValArg XValArg DocNameI
_ XRec DocNameI (HsType DocNameI)
_ : HsFamEqnPats DocNameI
_) Bool
u Qualification
q =
DocName
-> [HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))]
-> (Notation -> DocName -> Html)
-> (HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html)
-> Html
forall a.
DocName
-> [a] -> (Notation -> DocName -> Html) -> (a -> Html) -> Html
ppTypeApp DocName
n HsFamEqnPats DocNameI
[HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))]
args (\Notation
p -> Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
q Notation
p Bool
True) (Bool
-> Qualification
-> HideEmptyContexts
-> HsArg
DocNameI
(XRec DocNameI (HsType DocNameI))
(XRec DocNameI (HsType DocNameI))
-> Html
ppLHsTypeArg Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts)
ppAppNameTypeArgs DocName
n HsFamEqnPats DocNameI
args Bool
u Qualification
q =
(Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
q Notation
Prefix Bool
True DocName
n) Html -> Html -> Html
<+> [Html] -> Html
hsep ((HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html)
-> [HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))]
-> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> HsArg
DocNameI
(XRec DocNameI (HsType DocNameI))
(XRec DocNameI (HsType DocNameI))
-> Html
ppLHsTypeArg Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts) HsFamEqnPats DocNameI
[HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))]
args)
ppTypeApp :: DocName -> [a] -> (Notation -> DocName -> Html) -> (a -> Html) -> Html
ppTypeApp :: forall a.
DocName
-> [a] -> (Notation -> DocName -> Html) -> (a -> Html) -> Html
ppTypeApp DocName
n (a
t1 : a
t2 : [a]
rest) Notation -> DocName -> Html
ppDN a -> Html
ppT
| Bool
operator, Bool -> Bool
not (Bool -> Bool) -> ([a] -> Bool) -> [a] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null ([a] -> Bool) -> [a] -> Bool
forall a b. (a -> b) -> a -> b
$ [a]
rest = Html -> Html
parens Html
opApp Html -> Html -> Html
<+> [Html] -> Html
hsep ((a -> Html) -> [a] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map a -> Html
ppT [a]
rest)
| Bool
operator = Html
opApp
where
operator :: Bool
operator = Name -> Bool
isNameSym (Name -> Bool) -> (DocName -> Name) -> DocName -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocName -> Name
forall a. NamedThing a => a -> Name
getName (DocName -> Bool) -> DocName -> Bool
forall a b. (a -> b) -> a -> b
$ DocName
n
opApp :: Html
opApp = a -> Html
ppT a
t1 Html -> Html -> Html
<+> Notation -> DocName -> Html
ppDN Notation
Infix DocName
n Html -> Html -> Html
<+> a -> Html
ppT a
t2
ppTypeApp DocName
n [a]
ts Notation -> DocName -> Html
ppDN a -> Html
ppT = Notation -> DocName -> Html
ppDN Notation
Prefix DocName
n Html -> Html -> Html
<+> [Html] -> Html
hsep ((a -> Html) -> [a] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map a -> Html
ppT [a]
ts)
ppLContext
:: Maybe (LHsContext DocNameI)
-> Unicode
-> Qualification
-> HideEmptyContexts
-> Html
ppLContext :: Maybe (LHsContext DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppLContext Maybe (LHsContext DocNameI)
Nothing Bool
u Qualification
q HideEmptyContexts
h = HsContext DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContext [] Bool
u Qualification
q HideEmptyContexts
h
ppLContext (Just LHsContext DocNameI
c) Bool
u Qualification
q HideEmptyContexts
h = HsContext DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContext (GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)]
-> [GenLocated SrcSpanAnnA (HsType DocNameI)]
forall l e. GenLocated l e -> e
unLoc LHsContext DocNameI
GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)]
c) Bool
u Qualification
q HideEmptyContexts
h
ppLContextNoArrow
:: LHsContext DocNameI
-> Unicode
-> Qualification
-> HideEmptyContexts
-> Html
ppLContextNoArrow :: LHsContext DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppLContextNoArrow LHsContext DocNameI
c Bool
u Qualification
q HideEmptyContexts
h = HsContext DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContextNoArrow (GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)]
-> [GenLocated SrcSpanAnnA (HsType DocNameI)]
forall l e. GenLocated l e -> e
unLoc LHsContext DocNameI
GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)]
c) Bool
u Qualification
q HideEmptyContexts
h
ppContextNoArrow :: HsContext DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html
ppContextNoArrow :: HsContext DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContextNoArrow HsContext DocNameI
cxt Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts =
Html -> Maybe Html -> Html
forall a. a -> Maybe a -> a
Maybe.fromMaybe Html
noHtml (Maybe Html -> Html) -> Maybe Html -> Html
forall a b. (a -> b) -> a -> b
$
[HsType DocNameI]
-> Bool -> Qualification -> HideEmptyContexts -> Maybe Html
ppContextNoLocsMaybe ((GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI)
-> [GenLocated SrcSpanAnnA (HsType DocNameI)] -> [HsType DocNameI]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
cxt) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppContextNoLocs :: [HsType DocNameI] -> Unicode -> Qualification -> HideEmptyContexts -> Html
ppContextNoLocs :: [HsType DocNameI]
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContextNoLocs [HsType DocNameI]
cxt Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts =
Html -> (Html -> Html) -> Maybe Html -> Html
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Html
noHtml (Html -> Html -> Html
<+> Bool -> Html
darrow Bool
unicode) (Maybe Html -> Html) -> Maybe Html -> Html
forall a b. (a -> b) -> a -> b
$
[HsType DocNameI]
-> Bool -> Qualification -> HideEmptyContexts -> Maybe Html
ppContextNoLocsMaybe [HsType DocNameI]
cxt Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppContextNoLocsMaybe :: [HsType DocNameI] -> Unicode -> Qualification -> HideEmptyContexts -> Maybe Html
ppContextNoLocsMaybe :: [HsType DocNameI]
-> Bool -> Qualification -> HideEmptyContexts -> Maybe Html
ppContextNoLocsMaybe [] Bool
_ Qualification
_ HideEmptyContexts
emptyCtxts =
case HideEmptyContexts
emptyCtxts of
HideEmptyContexts
HideEmptyContexts -> Maybe Html
forall a. Maybe a
Nothing
HideEmptyContexts
ShowEmptyToplevelContexts -> Html -> Maybe Html
forall a. a -> Maybe a
Just (String -> Html
forall a. HTML a => a -> Html
toHtml String
"()")
ppContextNoLocsMaybe [HsType DocNameI]
cxt Bool
unicode Qualification
qual HideEmptyContexts
_ = Html -> Maybe Html
forall a. a -> Maybe a
Just (Html -> Maybe Html) -> Html -> Maybe Html
forall a b. (a -> b) -> a -> b
$ [HsType DocNameI] -> Bool -> Qualification -> Html
ppHsContext [HsType DocNameI]
cxt Bool
unicode Qualification
qual
ppContext :: HsContext DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html
ppContext :: HsContext DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContext HsContext DocNameI
cxt Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts = [HsType DocNameI]
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContextNoLocs ((GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI)
-> [GenLocated SrcSpanAnnA (HsType DocNameI)] -> [HsType DocNameI]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
cxt) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppHsContext :: [HsType DocNameI] -> Unicode -> Qualification -> Html
ppHsContext :: [HsType DocNameI] -> Bool -> Qualification -> Html
ppHsContext [] Bool
_ Qualification
_ = Html
noHtml
ppHsContext [HsType DocNameI
p] Bool
unicode Qualification
qual = Bool -> Qualification -> HsType DocNameI -> Html
ppCtxType Bool
unicode Qualification
qual HsType DocNameI
p
ppHsContext [HsType DocNameI]
cxt Bool
unicode Qualification
qual = [Html] -> Html
parenList ((HsType DocNameI -> Html) -> [HsType DocNameI] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts) [HsType DocNameI]
cxt)
ppClassHdr
:: Bool
-> Maybe (LocatedC [LHsType DocNameI])
-> DocName
-> LHsQTyVars DocNameI
-> [LHsFunDep DocNameI]
-> Unicode
-> Qualification
-> Html
ppClassHdr :: Bool
-> Maybe (LocatedC (HsContext DocNameI))
-> DocName
-> LHsQTyVars DocNameI
-> [LHsFunDep DocNameI]
-> Bool
-> Qualification
-> Html
ppClassHdr Bool
summ Maybe (LocatedC (HsContext DocNameI))
lctxt DocName
n LHsQTyVars DocNameI
tvs [LHsFunDep DocNameI]
fds Bool
unicode Qualification
qual =
String -> Html
keyword String
"class"
Html -> Html -> Html
<+> (if Bool -> Bool
not (HsContext DocNameI -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null (HsContext DocNameI -> Bool) -> HsContext DocNameI -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LHsContext DocNameI) -> HsContext DocNameI
fromMaybeContext Maybe (LHsContext DocNameI)
Maybe (LocatedC (HsContext DocNameI))
lctxt) then Maybe (LHsContext DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppLContext Maybe (LHsContext DocNameI)
Maybe (LocatedC (HsContext DocNameI))
lctxt Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts else Html
noHtml)
Html -> Html -> Html
<+> Bool
-> Bool
-> Qualification
-> DocName
-> [LHsTyVarBndr (HsBndrVis DocNameI) DocNameI]
-> Html
forall flag.
RenderableBndrFlag flag =>
Bool
-> Bool
-> Qualification
-> DocName
-> [LHsTyVarBndr flag DocNameI]
-> Html
ppAppDocNameTyVarBndrs Bool
summ Bool
unicode Qualification
qual DocName
n (LHsQTyVars DocNameI -> [LHsTyVarBndr (HsBndrVis DocNameI) DocNameI]
forall pass.
LHsQTyVars pass -> [LHsTyVarBndr (HsBndrVis pass) pass]
hsQTvExplicit LHsQTyVars DocNameI
tvs)
Html -> Html -> Html
<+> [LHsFunDep DocNameI] -> Bool -> Qualification -> Html
ppFds [LHsFunDep DocNameI]
fds Bool
unicode Qualification
qual
ppFds :: [LHsFunDep DocNameI] -> Unicode -> Qualification -> Html
ppFds :: [LHsFunDep DocNameI] -> Bool -> Qualification -> Html
ppFds [LHsFunDep DocNameI]
fds Bool
unicode Qualification
qual =
if [GenLocated SrcSpan (FunDep DocNameI)] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null [LHsFunDep DocNameI]
[GenLocated SrcSpan (FunDep DocNameI)]
fds
then Html
noHtml
else Char -> Html
char Char
'|' Html -> Html -> Html
<+> [Html] -> Html
hsep (Html -> [Html] -> [Html]
punctuate Html
comma ((GenLocated SrcSpan (FunDep DocNameI) -> Html)
-> [GenLocated SrcSpan (FunDep DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (FunDep DocNameI -> Html
fundep (FunDep DocNameI -> Html)
-> (GenLocated SrcSpan (FunDep DocNameI) -> FunDep DocNameI)
-> GenLocated SrcSpan (FunDep DocNameI)
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpan (FunDep DocNameI) -> FunDep DocNameI
forall l e. GenLocated l e -> e
unLoc) [LHsFunDep DocNameI]
[GenLocated SrcSpan (FunDep DocNameI)]
fds))
where
fundep :: FunDep DocNameI -> Html
fundep (FunDep XCFunDep DocNameI
_ [LIdP DocNameI]
vars1 [LIdP DocNameI]
vars2) = [GenLocated SrcSpanAnnN DocName] -> Html
ppVars [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
vars1 Html -> Html -> Html
<+> Bool -> Html
arrow Bool
unicode Html -> Html -> Html
<+> [GenLocated SrcSpanAnnN DocName] -> Html
ppVars [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
vars2
fundep (XFunDep XXFunDep DocNameI
_) = String -> Html
forall a. HasCallStack => String -> a
error String
"ppFds"
ppVars :: [GenLocated SrcSpanAnnN DocName] -> Html
ppVars = [Html] -> Html
hsep ([Html] -> Html)
-> ([GenLocated SrcSpanAnnN DocName] -> [Html])
-> [GenLocated SrcSpanAnnN DocName]
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (GenLocated SrcSpanAnnN DocName -> Html)
-> [GenLocated SrcSpanAnnN DocName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map ((Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
qual Notation
Prefix Bool
True) (DocName -> Html)
-> (GenLocated SrcSpanAnnN DocName -> DocName)
-> GenLocated SrcSpanAnnN DocName
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc)
ppShortClassDecl
:: Bool
-> LinksInfo
-> TyClDecl DocNameI
-> SrcSpan
-> [(DocName, DocForDecl DocName)]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppShortClassDecl :: Bool
-> LinksInfo
-> TyClDecl DocNameI
-> SrcSpan
-> [(DocName, DocForDecl DocName)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppShortClassDecl
Bool
summary
LinksInfo
links
( ClassDecl
{ tcdCtxt :: forall pass. TyClDecl pass -> Maybe (LHsContext pass)
tcdCtxt = Maybe (LHsContext DocNameI)
lctxt
, tcdLName :: forall pass. TyClDecl pass -> LIdP pass
tcdLName = LIdP DocNameI
lname
, tcdTyVars :: forall pass. TyClDecl pass -> LHsQTyVars pass
tcdTyVars = LHsQTyVars DocNameI
tvs
, tcdFDs :: forall pass. TyClDecl pass -> [LHsFunDep pass]
tcdFDs = [LHsFunDep DocNameI]
fds
, tcdSigs :: forall pass. TyClDecl pass -> [LSig pass]
tcdSigs = [LSig DocNameI]
sigs
, tcdATs :: forall pass. TyClDecl pass -> [LFamilyDecl pass]
tcdATs = [LFamilyDecl DocNameI]
ats
}
)
SrcSpan
loc
[(DocName, DocForDecl DocName)]
subdocs
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual =
if Bool -> Bool
not ((LSig DocNameI -> Bool) -> [LSig DocNameI] -> Bool
forall (t :: Type -> Type) a.
Foldable t =>
(a -> Bool) -> t a -> Bool
any LSig DocNameI -> Bool
forall p. UnXRec p => LSig p -> Bool
isUserLSig [LSig DocNameI]
sigs) Bool -> Bool -> Bool
&& [GenLocated SrcSpan (FamilyDecl DocNameI)] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null [LFamilyDecl DocNameI]
[GenLocated SrcSpan (FamilyDecl DocNameI)]
ats
then (if Bool
summary then Html -> Html
forall a. a -> a
id else LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice DocName
nm) Html
hdr
else
(if Bool
summary then Html -> Html
forall a. a -> a
id else LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice DocName
nm) (Html
hdr Html -> Html -> Html
<+> String -> Html
keyword String
"where")
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Bool -> [Html] -> Html
shortSubDecls
Bool
False
( [ Bool
-> LinksInfo
-> DocForDecl DocName
-> LFamilyDecl DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppAssocType Bool
summary LinksInfo
links DocForDecl DocName
doc LFamilyDecl DocNameI
GenLocated SrcSpan (FamilyDecl DocNameI)
at [] Bool
splice Bool
unicode Maybe String
pkg Qualification
qual | GenLocated SrcSpan (FamilyDecl DocNameI)
at <- [LFamilyDecl DocNameI]
[GenLocated SrcSpan (FamilyDecl DocNameI)]
ats, let doc :: DocForDecl DocName
doc = DocName -> [(DocName, DocForDecl DocName)] -> DocForDecl DocName
forall id1 id2.
Eq id1 =>
id1 -> [(id1, DocForDecl id2)] -> DocForDecl id2
lookupAnySubdoc (GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unL (GenLocated SrcSpanAnnN DocName -> DocName)
-> GenLocated SrcSpanAnnN DocName -> DocName
forall a b. (a -> b) -> a -> b
$ FamilyDecl DocNameI -> LIdP DocNameI
forall pass. FamilyDecl pass -> LIdP pass
fdLName (FamilyDecl DocNameI -> LIdP DocNameI)
-> FamilyDecl DocNameI -> LIdP DocNameI
forall a b. (a -> b) -> a -> b
$ GenLocated SrcSpan (FamilyDecl DocNameI) -> FamilyDecl DocNameI
forall l e. GenLocated l e -> e
unL GenLocated SrcSpan (FamilyDecl DocNameI)
at) [(DocName, DocForDecl DocName)]
subdocs
]
[Html] -> [Html] -> [Html]
forall a. [a] -> [a] -> [a]
++
[ Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFunSig
Bool
summary
LinksInfo
links
SrcSpan
loc
Html
noHtml
DocForDecl DocName
doc
[DocName]
names
LHsSigType DocNameI
typ
[]
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
| L SrcSpan
_ (ClassOpSig XClassOpSig DocNameI
_ Bool
False [LIdP DocNameI]
lnames LHsSigType DocNameI
typ) <- [LSig DocNameI]
[GenLocated SrcSpan (Sig DocNameI)]
sigs
, let names :: [DocName]
names = (GenLocated SrcSpanAnnN DocName -> DocName)
-> [GenLocated SrcSpanAnnN DocName] -> [DocName]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames
subdocName :: DocName
subdocName =
case [DocName] -> Maybe DocName
forall a. [a] -> Maybe a
Maybe.listToMaybe [DocName]
names of
Maybe DocName
Nothing -> String -> DocName
forall a. HasCallStack => String -> a
error String
"No names. An invariant was broken. Please report this to the Haddock project"
Just DocName
hd -> DocName
hd
doc :: DocForDecl DocName
doc = DocName -> [(DocName, DocForDecl DocName)] -> DocForDecl DocName
forall id1 id2.
Eq id1 =>
id1 -> [(id1, DocForDecl id2)] -> DocForDecl id2
lookupAnySubdoc DocName
subdocName [(DocName, DocForDecl DocName)]
subdocs
]
)
where
hdr :: Html
hdr = Bool
-> Maybe (LocatedC (HsContext DocNameI))
-> DocName
-> LHsQTyVars DocNameI
-> [LHsFunDep DocNameI]
-> Bool
-> Qualification
-> Html
ppClassHdr Bool
summary Maybe (LHsContext DocNameI)
Maybe (LocatedC (HsContext DocNameI))
lctxt (GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc LIdP DocNameI
GenLocated SrcSpanAnnN DocName
lname) LHsQTyVars DocNameI
tvs [LHsFunDep DocNameI]
fds Bool
unicode Qualification
qual
nm :: DocName
nm = GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc LIdP DocNameI
GenLocated SrcSpanAnnN DocName
lname
ppShortClassDecl Bool
_ LinksInfo
_ TyClDecl DocNameI
_ SrcSpan
_ [(DocName, DocForDecl DocName)]
_ Bool
_ Bool
_ Maybe String
_ Qualification
_ = String -> Html
forall a. HasCallStack => String -> a
error String
"declaration type not supported by ppShortClassDecl"
ppClassDecl
:: Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> SrcSpan
-> Documentation DocName
-> [(DocName, DocForDecl DocName)]
-> TyClDecl DocNameI
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppClassDecl :: Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> SrcSpan
-> Documentation DocName
-> [(DocName, DocForDecl DocName)]
-> TyClDecl DocNameI
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppClassDecl
Bool
summary
LinksInfo
links
[DocInstance DocNameI]
instances
[(DocName, Fixity)]
fixities
SrcSpan
loc
Documentation DocName
d
[(DocName, DocForDecl DocName)]
subdocs
decl :: TyClDecl DocNameI
decl@( ClassDecl
{ tcdCtxt :: forall pass. TyClDecl pass -> Maybe (LHsContext pass)
tcdCtxt = Maybe (LHsContext DocNameI)
lctxt
, tcdLName :: forall pass. TyClDecl pass -> LIdP pass
tcdLName = LIdP DocNameI
lname
, tcdTyVars :: forall pass. TyClDecl pass -> LHsQTyVars pass
tcdTyVars = LHsQTyVars DocNameI
ltyvars
, tcdFDs :: forall pass. TyClDecl pass -> [LHsFunDep pass]
tcdFDs = [LHsFunDep DocNameI]
lfds
, tcdSigs :: forall pass. TyClDecl pass -> [LSig pass]
tcdSigs = [LSig DocNameI]
lsigs
, tcdATs :: forall pass. TyClDecl pass -> [LFamilyDecl pass]
tcdATs = [LFamilyDecl DocNameI]
ats
, tcdATDefs :: forall pass. TyClDecl pass -> [LTyFamDefltDecl pass]
tcdATDefs = [LTyFamDefltDecl DocNameI]
atsDefs
}
)
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
| Bool
summary = Bool
-> LinksInfo
-> TyClDecl DocNameI
-> SrcSpan
-> [(DocName, DocForDecl DocName)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppShortClassDecl Bool
summary LinksInfo
links TyClDecl DocNameI
decl SrcSpan
loc [(DocName, DocForDecl DocName)]
subdocs Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
| Bool
otherwise =
Html
classheader
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Maybe Name
-> Maybe String -> Qualification -> Documentation DocName -> Html
docSection Maybe Name
curname Maybe String
pkg Qualification
qual Documentation DocName
d
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
minimalBit
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
atBit
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
methodBit
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
instancesBit
where
curname :: Maybe Name
curname = Name -> Maybe Name
forall a. a -> Maybe a
Just (Name -> Maybe Name) -> Name -> Maybe Name
forall a b. (a -> b) -> a -> b
$ DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
nm
sigs :: [Sig DocNameI]
sigs = (GenLocated SrcSpan (Sig DocNameI) -> Sig DocNameI)
-> [GenLocated SrcSpan (Sig DocNameI)] -> [Sig DocNameI]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpan (Sig DocNameI) -> Sig DocNameI
forall l e. GenLocated l e -> e
unLoc [LSig DocNameI]
[GenLocated SrcSpan (Sig DocNameI)]
lsigs
classheader :: Html
classheader
| (LSig DocNameI -> Bool) -> [LSig DocNameI] -> Bool
forall (t :: Type -> Type) a.
Foldable t =>
(a -> Bool) -> t a -> Bool
any LSig DocNameI -> Bool
forall p. UnXRec p => LSig p -> Bool
isUserLSig [LSig DocNameI]
lsigs = LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice DocName
nm (Bool -> Qualification -> Html
hdr Bool
unicode Qualification
qual Html -> Html -> Html
<+> String -> Html
keyword String
"where" Html -> Html -> Html
<+> Html
fixs)
| Bool
otherwise = LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice DocName
nm (Bool -> Qualification -> Html
hdr Bool
unicode Qualification
qual Html -> Html -> Html
<+> Html
fixs)
fixs :: Html
fixs = [(DocName, Fixity)] -> Qualification -> Html
ppFixities [(DocName, Fixity)
f | f :: (DocName, Fixity)
f@(DocName
n, Fixity
_) <- [(DocName, Fixity)]
fixities, DocName
n DocName -> DocName -> Bool
forall a. Eq a => a -> a -> Bool
== GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc LIdP DocNameI
GenLocated SrcSpanAnnN DocName
lname] Qualification
qual
nm :: DocName
nm = TyClDecl DocNameI -> DocName
tcdNameI TyClDecl DocNameI
decl
hdr :: Bool -> Qualification -> Html
hdr = Bool
-> Maybe (LocatedC (HsContext DocNameI))
-> DocName
-> LHsQTyVars DocNameI
-> [LHsFunDep DocNameI]
-> Bool
-> Qualification
-> Html
ppClassHdr Bool
summary Maybe (LHsContext DocNameI)
Maybe (LocatedC (HsContext DocNameI))
lctxt (GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc LIdP DocNameI
GenLocated SrcSpanAnnN DocName
lname) LHsQTyVars DocNameI
ltyvars [LHsFunDep DocNameI]
lfds
atBit :: Html
atBit =
[Html] -> Html
subAssociatedTypes
[ Bool
-> LinksInfo
-> DocForDecl DocName
-> LFamilyDecl DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppAssocType Bool
summary LinksInfo
links DocForDecl DocName
doc LFamilyDecl DocNameI
GenLocated SrcSpan (FamilyDecl DocNameI)
at [(DocName, Fixity)]
subfixs Bool
splice Bool
unicode Maybe String
pkg Qualification
qual
Html -> Html -> Html
<+> [Html] -> Html
subDefaults (Maybe Html -> [Html]
forall a. Maybe a -> [a]
Maybe.maybeToList Maybe Html
defTys)
| GenLocated SrcSpan (FamilyDecl DocNameI)
at <- [LFamilyDecl DocNameI]
[GenLocated SrcSpan (FamilyDecl DocNameI)]
ats
, let name :: DocName
name = GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc (GenLocated SrcSpanAnnN DocName -> DocName)
-> (FamilyDecl DocNameI -> GenLocated SrcSpanAnnN DocName)
-> FamilyDecl DocNameI
-> DocName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FamilyDecl DocNameI -> LIdP DocNameI
FamilyDecl DocNameI -> GenLocated SrcSpanAnnN DocName
forall pass. FamilyDecl pass -> LIdP pass
fdLName (FamilyDecl DocNameI -> DocName) -> FamilyDecl DocNameI -> DocName
forall a b. (a -> b) -> a -> b
$ GenLocated SrcSpan (FamilyDecl DocNameI) -> FamilyDecl DocNameI
forall l e. GenLocated l e -> e
unLoc GenLocated SrcSpan (FamilyDecl DocNameI)
at
doc :: DocForDecl DocName
doc = DocName -> [(DocName, DocForDecl DocName)] -> DocForDecl DocName
forall id1 id2.
Eq id1 =>
id1 -> [(id1, DocForDecl id2)] -> DocForDecl id2
lookupAnySubdoc DocName
name [(DocName, DocForDecl DocName)]
subdocs
subfixs :: [(DocName, Fixity)]
subfixs = ((DocName, Fixity) -> Bool)
-> [(DocName, Fixity)] -> [(DocName, Fixity)]
forall a. (a -> Bool) -> [a] -> [a]
filter ((DocName -> DocName -> Bool
forall a. Eq a => a -> a -> Bool
== DocName
name) (DocName -> Bool)
-> ((DocName, Fixity) -> DocName) -> (DocName, Fixity) -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocName, Fixity) -> DocName
forall a b. (a, b) -> a
fst) [(DocName, Fixity)]
fixities
defTys :: Maybe Html
defTys = (Html -> Html
declElem (Html -> Html)
-> (([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html)
-> ([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocName
-> ([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html
ppDefaultAssocTy DocName
name) (([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html)
-> Maybe
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
-> Maybe Html
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> DocName
-> Maybe
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
lookupDAT DocName
name
]
ppDefaultAssocTy :: DocName
-> ([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html
ppDefaultAssocTy DocName
n ([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))]
vs, GenLocated SrcSpanAnnA (HsType DocNameI)
rhs) =
[Html] -> Html
hsep
[ String -> Html
keyword String
"type"
, DocName -> HsFamEqnPats DocNameI -> Bool -> Qualification -> Html
ppAppNameTypeArgs DocName
n HsFamEqnPats DocNameI
[HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))]
vs Bool
unicode Qualification
qual
, Html
equals
, Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc GenLocated SrcSpanAnnA (HsType DocNameI)
rhs)
]
lookupDAT :: DocName
-> Maybe
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
lookupDAT DocName
name = Name
-> Map
Name
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
-> Maybe
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup (DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
name) Map
Name
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
defaultAssocTys
defaultAssocTys :: Map
Name
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
defaultAssocTys =
[(Name,
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI)))]
-> Map
Name
([HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))],
GenLocated SrcSpanAnnA (HsType DocNameI))
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ (DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
name, (HsFamEqnPats DocNameI
[HsArg
DocNameI
(GenLocated SrcSpanAnnA (HsType DocNameI))
(GenLocated SrcSpanAnnA (HsType DocNameI))]
vs, XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
typ))
| L
SrcSpanAnnA
_
( TyFamInstDecl
XCTyFamInstDecl DocNameI
_
( FamEqn
{ feqn_rhs :: forall pass rhs. FamEqn pass rhs -> rhs
feqn_rhs = XRec DocNameI (HsType DocNameI)
typ
, feqn_tycon :: forall pass rhs. FamEqn pass rhs -> LIdP pass
feqn_tycon = L SrcSpanAnnN
_ DocName
name
, feqn_pats :: forall pass rhs. FamEqn pass rhs -> HsFamEqnPats pass
feqn_pats = HsFamEqnPats DocNameI
vs
}
)
) <-
[LTyFamDefltDecl DocNameI]
[GenLocated SrcSpanAnnA (TyFamInstDecl DocNameI)]
atsDefs
]
methodBit :: Html
methodBit =
[Html] -> Html
subMethods
[ Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFunSig
Bool
summary
LinksInfo
links
SrcSpan
loc
Html
noHtml
DocForDecl DocName
doc
[DocName
name]
LHsSigType DocNameI
typ
[(DocName, Fixity)]
subfixs
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
Html -> Html -> Html
<+> [Html] -> Html
subDefaults (Maybe Html -> [Html]
forall a. Maybe a -> [a]
Maybe.maybeToList Maybe Html
defSigs)
| ClassOpSig XClassOpSig DocNameI
_ Bool
False [LIdP DocNameI]
lnames LHsSigType DocNameI
typ <- [Sig DocNameI]
sigs
, DocName
name <- (GenLocated SrcSpanAnnN DocName -> DocName)
-> [GenLocated SrcSpanAnnN DocName] -> [DocName]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames
, let doc :: DocForDecl DocName
doc = DocName -> [(DocName, DocForDecl DocName)] -> DocForDecl DocName
forall id1 id2.
Eq id1 =>
id1 -> [(id1, DocForDecl id2)] -> DocForDecl id2
lookupAnySubdoc DocName
name [(DocName, DocForDecl DocName)]
subdocs
subfixs :: [(DocName, Fixity)]
subfixs = ((DocName, Fixity) -> Bool)
-> [(DocName, Fixity)] -> [(DocName, Fixity)]
forall a. (a -> Bool) -> [a] -> [a]
filter ((DocName -> DocName -> Bool
forall a. Eq a => a -> a -> Bool
== DocName
name) (DocName -> Bool)
-> ((DocName, Fixity) -> DocName) -> (DocName, Fixity) -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocName, Fixity) -> DocName
forall a b. (a, b) -> a
fst) [(DocName, Fixity)]
fixities
defSigs :: Maybe Html
defSigs = DocName
-> (GenLocated SrcSpanAnnA (HsSigType DocNameI),
DocForDecl DocName)
-> Html
ppDefaultFunSig DocName
name ((GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
-> Html)
-> Maybe
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
-> Maybe Html
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> DocName
-> Maybe
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
lookupDM DocName
name
]
ppDefaultFunSig :: DocName
-> (GenLocated SrcSpanAnnA (HsSigType DocNameI),
DocForDecl DocName)
-> Html
ppDefaultFunSig DocName
n (GenLocated SrcSpanAnnA (HsSigType DocNameI)
t, DocForDecl DocName
d') =
Bool
-> LinksInfo
-> SrcSpan
-> Html
-> DocForDecl DocName
-> [DocName]
-> LHsSigType DocNameI
-> [(DocName, Fixity)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppFunSig
Bool
summary
LinksInfo
links
SrcSpan
loc
(String -> Html
keyword String
"default")
DocForDecl DocName
d'
[DocName
n]
LHsSigType DocNameI
GenLocated SrcSpanAnnA (HsSigType DocNameI)
t
[]
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
lookupDM :: DocName
-> Maybe
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
lookupDM DocName
name = String
-> Map
String
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
-> Maybe
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup (OccName -> String
occNameString (OccName -> String) -> OccName -> String
forall a b. (a -> b) -> a -> b
$ OccName -> OccName
mkDefaultMethodOcc (OccName -> OccName) -> OccName -> OccName
forall a b. (a -> b) -> a -> b
$ DocName -> OccName
forall a. NamedThing a => a -> OccName
getOccName DocName
name) Map
String
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
defaultMethods
defaultMethods :: Map
String
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
defaultMethods =
[(String,
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName))]
-> Map
String
(GenLocated SrcSpanAnnA (HsSigType DocNameI), DocForDecl DocName)
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ (String
nameStr, (LHsSigType DocNameI
GenLocated SrcSpanAnnA (HsSigType DocNameI)
typ, DocForDecl DocName
doc))
| ClassOpSig XClassOpSig DocNameI
_ Bool
True [LIdP DocNameI]
lnames LHsSigType DocNameI
typ <- [Sig DocNameI]
sigs
, DocName
name <- (GenLocated SrcSpanAnnN DocName -> DocName)
-> [GenLocated SrcSpanAnnN DocName] -> [DocName]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames
, let doc :: DocForDecl DocName
doc = DocName -> [(DocName, DocForDecl DocName)] -> DocForDecl DocName
forall id1 id2.
Eq id1 =>
id1 -> [(id1, DocForDecl id2)] -> DocForDecl id2
lookupAnySubdoc DocName
name [(DocName, DocForDecl DocName)]
subdocs
nameStr :: String
nameStr = DocName -> String
forall a. NamedThing a => a -> String
getOccString DocName
name
]
minimalBit :: Html
minimalBit = case [BooleanFormula DocNameI
s | MinimalSig XMinimalSig DocNameI
_ (L SrcSpanAnnL
_ BooleanFormula DocNameI
s) <- [Sig DocNameI]
sigs] of
And [LBooleanFormula DocNameI]
xs : [BooleanFormula DocNameI]
_
| [Name] -> [Name]
forall a. Ord a => [a] -> [a]
sort [DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
n | L SrcSpanAnnL
_ (Var (L SrcSpanAnnN
_ DocName
n)) <- [LBooleanFormula DocNameI]
[GenLocated SrcSpanAnnL (BooleanFormula DocNameI)]
xs]
[Name] -> [Name] -> Bool
forall a. Eq a => a -> a -> Bool
== [Name] -> [Name]
forall a. Ord a => [a] -> [a]
sort [DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
n | ClassOpSig XClassOpSig DocNameI
_ Bool
_ [LIdP DocNameI]
ns LHsSigType DocNameI
_ <- [Sig DocNameI]
sigs, L SrcSpanAnnN
_ DocName
n <- [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
ns] ->
Html
noHtml
Var (L SrcSpanAnnN
_ DocName
n) : [BooleanFormula DocNameI]
_
| [DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
n]
[Name] -> [Name] -> Bool
forall a. Eq a => a -> a -> Bool
== [DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
n' | ClassOpSig XClassOpSig DocNameI
_ Bool
_ [LIdP DocNameI]
ns LHsSigType DocNameI
_ <- [Sig DocNameI]
sigs, L SrcSpanAnnN
_ DocName
n' <- [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
ns] ->
Html
noHtml
And [] : [BooleanFormula DocNameI]
_ -> Html -> Html
subMinimal (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ String -> Html
forall a. HTML a => a -> Html
toHtml String
"Nothing"
BooleanFormula DocNameI
m : [BooleanFormula DocNameI]
_ -> Html -> Html
subMinimal (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ Bool -> BooleanFormula DocNameI -> Html
ppMinimal Bool
False BooleanFormula DocNameI
m
[BooleanFormula DocNameI]
_ -> Html
noHtml
ppMinimal :: Bool -> BooleanFormula DocNameI -> Html
ppMinimal Bool
_ (Var (L SrcSpanAnnN
_ DocName
n)) = Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
qual Notation
Prefix Bool
True DocName
n
ppMinimal Bool
_ (And [LBooleanFormula DocNameI]
fs) = (Html -> Html -> Html) -> [Html] -> Html
forall a. (a -> a -> a) -> [a] -> a
forall (t :: Type -> Type) a.
Foldable t =>
(a -> a -> a) -> t a -> a
foldr1 (\Html
a Html
b -> Html
a Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ String
", " String -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
b) ([Html] -> Html) -> [Html] -> Html
forall a b. (a -> b) -> a -> b
$ (GenLocated SrcSpanAnnL (BooleanFormula DocNameI) -> Html)
-> [GenLocated SrcSpanAnnL (BooleanFormula DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> BooleanFormula DocNameI -> Html
ppMinimal Bool
True (BooleanFormula DocNameI -> Html)
-> (GenLocated SrcSpanAnnL (BooleanFormula DocNameI)
-> BooleanFormula DocNameI)
-> GenLocated SrcSpanAnnL (BooleanFormula DocNameI)
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnL (BooleanFormula DocNameI)
-> BooleanFormula DocNameI
forall l e. GenLocated l e -> e
unLoc) [LBooleanFormula DocNameI]
[GenLocated SrcSpanAnnL (BooleanFormula DocNameI)]
fs
ppMinimal Bool
p (Or [LBooleanFormula DocNameI]
fs) = Html -> Html
wrap (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ (Html -> Html -> Html) -> [Html] -> Html
forall a. (a -> a -> a) -> [a] -> a
forall (t :: Type -> Type) a.
Foldable t =>
(a -> a -> a) -> t a -> a
foldr1 (\Html
a Html
b -> Html
a Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ String
" | " String -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
b) ([Html] -> Html) -> [Html] -> Html
forall a b. (a -> b) -> a -> b
$ (GenLocated SrcSpanAnnL (BooleanFormula DocNameI) -> Html)
-> [GenLocated SrcSpanAnnL (BooleanFormula DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> BooleanFormula DocNameI -> Html
ppMinimal Bool
False (BooleanFormula DocNameI -> Html)
-> (GenLocated SrcSpanAnnL (BooleanFormula DocNameI)
-> BooleanFormula DocNameI)
-> GenLocated SrcSpanAnnL (BooleanFormula DocNameI)
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnL (BooleanFormula DocNameI)
-> BooleanFormula DocNameI
forall l e. GenLocated l e -> e
unLoc) [LBooleanFormula DocNameI]
[GenLocated SrcSpanAnnL (BooleanFormula DocNameI)]
fs
where
wrap :: Html -> Html
wrap | Bool
p = Html -> Html
parens | Bool
otherwise = Html -> Html
forall a. a -> a
id
ppMinimal Bool
p (Parens LBooleanFormula DocNameI
x) = Bool -> BooleanFormula DocNameI -> Html
ppMinimal Bool
p (GenLocated SrcSpanAnnL (BooleanFormula DocNameI)
-> BooleanFormula DocNameI
forall l e. GenLocated l e -> e
unLoc LBooleanFormula DocNameI
GenLocated SrcSpanAnnL (BooleanFormula DocNameI)
x)
instancesBit :: Html
instancesBit =
LinksInfo
-> InstOrigin DocName
-> [DocInstance DocNameI]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppInstances
LinksInfo
links
(DocName -> InstOrigin DocName
forall name. name -> InstOrigin name
OriginClass DocName
nm)
[DocInstance DocNameI]
instances
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
ppClassDecl Bool
_ LinksInfo
_ [DocInstance DocNameI]
_ [(DocName, Fixity)]
_ SrcSpan
_ Documentation DocName
_ [(DocName, DocForDecl DocName)]
_ TyClDecl DocNameI
_ Bool
_ Bool
_ Maybe String
_ Qualification
_ = String -> Html
forall a. HasCallStack => String -> a
error String
"declaration type not supported by ppShortClassDecl"
ppInstances
:: LinksInfo
-> InstOrigin DocName
-> [DocInstance DocNameI]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppInstances :: LinksInfo
-> InstOrigin DocName
-> [DocInstance DocNameI]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppInstances LinksInfo
links InstOrigin DocName
origin [DocInstance DocNameI]
instances Bool
splice Bool
unicode Maybe String
pkg Qualification
qual =
Maybe String
-> Qualification
-> String
-> LinksInfo
-> Bool
-> [(SubDecl, Maybe Module, Located DocName)]
-> Html
subInstances Maybe String
pkg Qualification
qual String
instName LinksInfo
links Bool
True ((Int
-> (InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)
-> (SubDecl, Maybe Module, Located DocName))
-> [Int]
-> [(InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)]
-> [(SubDecl, Maybe Module, Located DocName)]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Int
-> DocInstance DocNameI -> (SubDecl, Maybe Module, Located DocName)
Int
-> (InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)
-> (SubDecl, Maybe Module, Located DocName)
instDecl [Int
1 ..] [DocInstance DocNameI]
[(InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)]
instances)
where
instName :: String
instName = InstOrigin DocName -> String
forall a. NamedThing a => a -> String
getOccString InstOrigin DocName
origin
instDecl :: Int -> DocInstance DocNameI -> (SubDecl, Maybe Module, Located DocName)
instDecl :: Int
-> DocInstance DocNameI -> (SubDecl, Maybe Module, Located DocName)
instDecl Int
no (InstHead DocNameI
inst, Maybe (MDoc (IdP DocNameI))
mdoc, Located (IdP DocNameI)
loc, Maybe Module
mdl) =
((LinksInfo
-> Bool
-> Bool
-> Qualification
-> Maybe (MDoc DocName)
-> InstOrigin DocName
-> Bool
-> Int
-> InstHead DocNameI
-> Maybe Module
-> SubDecl
ppInstHead LinksInfo
links Bool
splice Bool
unicode Qualification
qual Maybe (MDoc (IdP DocNameI))
Maybe (MDoc DocName)
mdoc InstOrigin DocName
origin Bool
False Int
no InstHead DocNameI
inst Maybe Module
mdl), Maybe Module
mdl, Located (IdP DocNameI)
Located DocName
loc)
ppOrphanInstances
:: LinksInfo
-> [DocInstance DocNameI]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppOrphanInstances :: LinksInfo
-> [DocInstance DocNameI]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppOrphanInstances LinksInfo
links [DocInstance DocNameI]
instances Bool
splice Bool
unicode Maybe String
pkg Qualification
qual =
Maybe String
-> Qualification
-> LinksInfo
-> Bool
-> [(SubDecl, Maybe Module, Located DocName)]
-> Html
subOrphanInstances Maybe String
pkg Qualification
qual LinksInfo
links Bool
True ((Int
-> (InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)
-> (SubDecl, Maybe Module, Located DocName))
-> [Int]
-> [(InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)]
-> [(SubDecl, Maybe Module, Located DocName)]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Int
-> DocInstance DocNameI -> (SubDecl, Maybe Module, Located DocName)
Int
-> (InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)
-> (SubDecl, Maybe Module, Located DocName)
instDecl [Int
1 ..] [DocInstance DocNameI]
[(InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)]
instances)
where
instOrigin :: InstHead name -> InstOrigin (IdP name)
instOrigin :: forall name. InstHead name -> InstOrigin (IdP name)
instOrigin InstHead name
inst = IdP name -> InstOrigin (IdP name)
forall name. name -> InstOrigin name
OriginClass (InstHead name -> IdP name
forall name. InstHead name -> IdP name
ihdClsName InstHead name
inst)
instDecl :: Int -> DocInstance DocNameI -> (SubDecl, Maybe Module, Located DocName)
instDecl :: Int
-> DocInstance DocNameI -> (SubDecl, Maybe Module, Located DocName)
instDecl Int
no (InstHead DocNameI
inst, Maybe (MDoc (IdP DocNameI))
mdoc, Located (IdP DocNameI)
loc, Maybe Module
mdl) =
((LinksInfo
-> Bool
-> Bool
-> Qualification
-> Maybe (MDoc DocName)
-> InstOrigin DocName
-> Bool
-> Int
-> InstHead DocNameI
-> Maybe Module
-> SubDecl
ppInstHead LinksInfo
links Bool
splice Bool
unicode Qualification
qual Maybe (MDoc (IdP DocNameI))
Maybe (MDoc DocName)
mdoc (InstHead DocNameI -> InstOrigin (IdP DocNameI)
forall name. InstHead name -> InstOrigin (IdP name)
instOrigin InstHead DocNameI
inst) Bool
True Int
no InstHead DocNameI
inst Maybe Module
forall a. Maybe a
Nothing), Maybe Module
mdl, Located (IdP DocNameI)
Located DocName
loc)
ppInstHead
:: LinksInfo
-> Splice
-> Unicode
-> Qualification
-> Maybe (MDoc DocName)
-> InstOrigin DocName
-> Bool
-> Int
-> InstHead DocNameI
-> Maybe Module
-> SubDecl
ppInstHead :: LinksInfo
-> Bool
-> Bool
-> Qualification
-> Maybe (MDoc DocName)
-> InstOrigin DocName
-> Bool
-> Int
-> InstHead DocNameI
-> Maybe Module
-> SubDecl
ppInstHead LinksInfo
links Bool
splice Bool
unicode Qualification
qual Maybe (MDoc DocName)
mdoc InstOrigin DocName
origin Bool
orphan Int
no ihd :: InstHead DocNameI
ihd@(InstHead{[HsType DocNameI]
IdP DocNameI
InstType DocNameI
ihdClsName :: forall name. InstHead name -> IdP name
ihdClsName :: IdP DocNameI
ihdTypes :: [HsType DocNameI]
ihdInstType :: InstType DocNameI
ihdInstType :: forall name. InstHead name -> InstType name
ihdTypes :: forall name. InstHead name -> [HsType name]
..}) Maybe Module
mdl =
case InstType DocNameI
ihdInstType of
ClassInst{[DocInstance DocNameI]
[HsType DocNameI]
[Sig DocNameI]
LHsQTyVars DocNameI
clsiCtx :: [HsType DocNameI]
clsiTyVars :: LHsQTyVars DocNameI
clsiSigs :: [Sig DocNameI]
clsiAssocTys :: [DocInstance DocNameI]
clsiAssocTys :: forall name. InstType name -> [DocInstance name]
clsiSigs :: forall name. InstType name -> [Sig name]
clsiTyVars :: forall name. InstType name -> LHsQTyVars name
clsiCtx :: forall name. InstType name -> [HsType name]
..} ->
( String -> Html -> Html
subInstHead String
iid (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ [HsType DocNameI]
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContextNoLocs [HsType DocNameI]
clsiCtx Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts Html -> Html -> Html
<+> Html
typ
, Maybe (MDoc DocName)
mdoc
, [String -> [Html] -> [Html] -> Html -> Html
subInstDetails String
iid [Html]
ats [Html]
sigs Html
mname]
)
where
sigs :: [Html]
sigs = LinksInfo
-> Bool -> Bool -> Qualification -> [Sig DocNameI] -> [Html]
ppInstanceSigs LinksInfo
links Bool
splice Bool
unicode Qualification
qual [Sig DocNameI]
clsiSigs
ats :: [Html]
ats = LinksInfo
-> Bool
-> Bool
-> Qualification
-> Bool
-> [DocInstance DocNameI]
-> [Html]
ppInstanceAssocTys LinksInfo
links Bool
splice Bool
unicode Qualification
qual Bool
orphan [DocInstance DocNameI]
clsiAssocTys
TypeInst Maybe (HsType DocNameI)
rhs ->
( String -> Html -> Html
subInstHead String
iid Html
ptype
, Maybe (MDoc DocName)
mdoc
, [String -> Html -> Html -> Html
subFamInstDetails String
iid Html
prhs Html
mname]
)
where
ptype :: Html
ptype = String -> Html
keyword String
"type" Html -> Html -> Html
<+> Html
typ
prhs :: Html
prhs =
Html
ptype
Html -> Html -> Html
<+> Html
-> (HsType DocNameI -> Html) -> Maybe (HsType DocNameI) -> Html
forall b a. b -> (a -> b) -> Maybe a -> b
maybe
Html
noHtml
(\HsType DocNameI
t -> Html
equals Html -> Html -> Html
<+> Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts HsType DocNameI
t)
Maybe (HsType DocNameI)
rhs
DataInst dd :: TyClDecl DocNameI
dd@(DataDecl {}) ->
( String -> Html -> Html
subInstHead String
iid Html
pdata
, Maybe (MDoc DocName)
mdoc
, [String -> Html -> Html -> Html
subFamInstDetails String
iid Html
pdecl Html
mname]
)
where
cons :: DataDefnCons (LConDecl DocNameI)
cons = HsDataDefn DocNameI -> DataDefnCons (LConDecl DocNameI)
forall pass. HsDataDefn pass -> DataDefnCons (LConDecl pass)
dd_cons (TyClDecl DocNameI -> HsDataDefn DocNameI
forall pass. TyClDecl pass -> HsDataDefn pass
tcdDataDefn TyClDecl DocNameI
dd)
pref :: Html
pref = case DataDefnCons (LConDecl DocNameI)
cons of NewTypeCon LConDecl DocNameI
_ -> String -> Html
keyword String
"newtype"; DataTypeCons Bool
_ [LConDecl DocNameI]
_ -> String -> Html
keyword String
"data"
pdata :: Html
pdata = Html
pref Html -> Html -> Html
<+> Html
typ
pdecl :: Html
pdecl = Html
pdata Html -> Html -> Html
<+> Bool
-> Bool
-> TyClDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> Bool
-> Qualification
-> Html
ppShortDataDecl Bool
False Bool
True TyClDecl DocNameI
dd [] Bool
unicode Qualification
qual
DataInst {} -> String -> SubDecl
forall a. HasCallStack => String -> a
error String
"ppInstHead"
where
mname :: Html
mname = Html -> (Module -> Html) -> Maybe Module -> Html
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Html
noHtml (\Module
m -> String -> Html
forall a. HTML a => a -> Html
toHtml String
"Defined in" Html -> Html -> Html
<+> Module -> Html
ppModule Module
m) Maybe Module
mdl
iid :: String
iid = InstOrigin DocName -> Int -> Bool -> InstHead DocNameI -> String
instanceId InstOrigin DocName
origin Int
no Bool
orphan InstHead DocNameI
ihd
typ :: Html
typ = DocName -> [HsType DocNameI] -> Bool -> Qualification -> Html
ppAppNameTypes IdP DocNameI
DocName
ihdClsName [HsType DocNameI]
ihdTypes Bool
unicode Qualification
qual
ppInstanceAssocTys
:: LinksInfo
-> Splice
-> Unicode
-> Qualification
-> Bool
-> [DocInstance DocNameI]
-> [Html]
ppInstanceAssocTys :: LinksInfo
-> Bool
-> Bool
-> Qualification
-> Bool
-> [DocInstance DocNameI]
-> [Html]
ppInstanceAssocTys LinksInfo
links Bool
splice Bool
unicode Qualification
qual Bool
orphan [DocInstance DocNameI]
insts =
Maybe Html -> [Html]
forall a. Maybe a -> [a]
Maybe.maybeToList (Maybe Html -> [Html]) -> Maybe Html -> [Html]
forall a b. (a -> b) -> a -> b
$
Maybe String
-> Qualification
-> LinksInfo
-> Bool
-> [(SubDecl, Maybe Module, Located DocName)]
-> Maybe Html
subTableSrc Maybe String
forall a. Maybe a
Nothing Qualification
qual LinksInfo
links Bool
True ([(SubDecl, Maybe Module, Located DocName)] -> Maybe Html)
-> [(SubDecl, Maybe Module, Located DocName)] -> Maybe Html
forall a b. (a -> b) -> a -> b
$
((InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)
-> Int -> (SubDecl, Maybe Module, Located DocName))
-> [(InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)]
-> [Int]
-> [(SubDecl, Maybe Module, Located DocName)]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith
(InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)
-> Int -> (SubDecl, Maybe Module, Located DocName)
mkInstHead
[DocInstance DocNameI]
[(InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)]
insts
[Int
1 ..]
where
mkInstHead :: (InstHead DocNameI, Maybe (MDoc DocName), Located DocName,
Maybe Module)
-> Int -> (SubDecl, Maybe Module, Located DocName)
mkInstHead (InstHead DocNameI
inst, Maybe (MDoc DocName)
doc, Located DocName
name, Maybe Module
mdl) Int
no =
( LinksInfo
-> Bool
-> Bool
-> Qualification
-> Maybe (MDoc DocName)
-> InstOrigin DocName
-> Bool
-> Int
-> InstHead DocNameI
-> Maybe Module
-> SubDecl
ppInstHead LinksInfo
links Bool
splice Bool
unicode Qualification
qual Maybe (MDoc DocName)
doc (DocName -> InstOrigin DocName
forall name. name -> InstOrigin name
OriginFamily (Located DocName -> DocName
forall l e. GenLocated l e -> e
unLoc Located DocName
name)) Bool
orphan Int
no InstHead DocNameI
inst Maybe Module
mdl
, Maybe Module
mdl
, Located DocName
name
)
ppInstanceSigs
:: LinksInfo
-> Splice
-> Unicode
-> Qualification
-> [Sig DocNameI]
-> [Html]
ppInstanceSigs :: LinksInfo
-> Bool -> Bool -> Qualification -> [Sig DocNameI] -> [Html]
ppInstanceSigs LinksInfo
links Bool
splice Bool
unicode Qualification
qual [Sig DocNameI]
sigs = do
TypeSig _ lnames typ <- [Sig DocNameI]
sigs
let names = (GenLocated SrcSpanAnnN DocName -> DocName)
-> [GenLocated SrcSpanAnnN DocName] -> [DocName]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames
L _ rtyp = dropWildCardsI typ
let lname =
case [GenLocated SrcSpanAnnN DocName]
-> Maybe (GenLocated SrcSpanAnnN DocName)
forall a. [a] -> Maybe a
Maybe.listToMaybe [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames of
Maybe (GenLocated SrcSpanAnnN DocName)
Nothing -> String -> GenLocated SrcSpanAnnN DocName
forall a. HasCallStack => String -> a
error String
"No names. An invariant was broken. Please report this to the Haddock project"
Just GenLocated SrcSpanAnnN DocName
hd -> GenLocated SrcSpanAnnN DocName
hd
return $ ppSimpleSig links splice unicode qual HideEmptyContexts (getLocA lname) names rtyp
lookupAnySubdoc :: Eq id1 => id1 -> [(id1, DocForDecl id2)] -> DocForDecl id2
lookupAnySubdoc :: forall id1 id2.
Eq id1 =>
id1 -> [(id1, DocForDecl id2)] -> DocForDecl id2
lookupAnySubdoc id1
n = DocForDecl id2 -> Maybe (DocForDecl id2) -> DocForDecl id2
forall a. a -> Maybe a -> a
Maybe.fromMaybe DocForDecl id2
forall name. DocForDecl name
noDocForDecl (Maybe (DocForDecl id2) -> DocForDecl id2)
-> ([(id1, DocForDecl id2)] -> Maybe (DocForDecl id2))
-> [(id1, DocForDecl id2)]
-> DocForDecl id2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. id1 -> [(id1, DocForDecl id2)] -> Maybe (DocForDecl id2)
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup id1
n
instanceId :: InstOrigin DocName -> Int -> Bool -> InstHead DocNameI -> String
instanceId :: InstOrigin DocName -> Int -> Bool -> InstHead DocNameI -> String
instanceId InstOrigin DocName
origin Int
no Bool
orphan InstHead DocNameI
ihd =
[String] -> String
forall (t :: Type -> Type) a. Foldable t => t [a] -> [a]
concat ([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$
[String
"o:" | Bool
orphan]
[String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++ [ InstOrigin DocName -> String
forall {name}. InstOrigin name -> String
qual InstOrigin DocName
origin
, String
":" String -> String -> String
forall a. [a] -> [a] -> [a]
++ InstOrigin DocName -> String
forall a. NamedThing a => a -> String
getOccString InstOrigin DocName
origin
, String
":" String -> String -> String
forall a. [a] -> [a] -> [a]
++ DocName -> String
forall a. NamedThing a => a -> String
getOccString (InstHead DocNameI -> IdP DocNameI
forall name. InstHead name -> IdP name
ihdClsName InstHead DocNameI
ihd)
, String
":" String -> String -> String
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
no
]
where
qual :: InstOrigin name -> String
qual (OriginClass name
_) = String
"ic"
qual (OriginData name
_) = String
"id"
qual (OriginFamily name
_) = String
"if"
ppShortDataDecl
:: Bool
-> Bool
-> TyClDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> Unicode
-> Qualification
-> Html
ppShortDataDecl :: Bool
-> Bool
-> TyClDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> Bool
-> Qualification
-> Html
ppShortDataDecl Bool
summary Bool
dataInst dataDecl :: TyClDecl DocNameI
dataDecl@(DataDecl {}) [(HsDecl DocNameI, DocForDecl DocName)]
pats Bool
unicode Qualification
qual
| [] <- DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
-> [GenLocated SrcSpan (ConDecl DocNameI)]
forall a. DataDefnCons a -> [a]
forall (t :: Type -> Type) a. Foldable t => t a -> [a]
toList DataDefnCons (LConDecl DocNameI)
DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
cons
, [] <- [(HsDecl DocNameI, DocForDecl DocName)]
pats =
Html
dataHeader
| [GenLocated SrcSpan (ConDecl DocNameI)
lcon] <- DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
-> [GenLocated SrcSpan (ConDecl DocNameI)]
forall a. DataDefnCons a -> [a]
forall (t :: Type -> Type) a. Foldable t => t a -> [a]
toList DataDefnCons (LConDecl DocNameI)
DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
cons
, [] <- [(HsDecl DocNameI, DocForDecl DocName)]
pats
, Bool
isH98
, (Html
cHead, Html
cBody, Html
cFoot) <- Bool
-> Bool
-> ConDecl DocNameI
-> Bool
-> Qualification
-> (Html, Html, Html)
ppShortConstrParts Bool
summary Bool
dataInst (GenLocated SrcSpan (ConDecl DocNameI) -> ConDecl DocNameI
forall l e. GenLocated l e -> e
unLoc GenLocated SrcSpan (ConDecl DocNameI)
lcon) Bool
unicode Qualification
qual =
(Html
dataHeader Html -> Html -> Html
<+> Html
equals Html -> Html -> Html
<+> Html
cHead) Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
cBody Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
cFoot
| [] <- [(HsDecl DocNameI, DocForDecl DocName)]
pats
, Bool
isH98 =
Html
dataHeader
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Bool -> [Html] -> Html
shortSubDecls Bool
dataInst ((Char -> GenLocated SrcSpan (ConDecl DocNameI) -> Html)
-> String -> [GenLocated SrcSpan (ConDecl DocNameI)] -> [Html]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Char -> GenLocated SrcSpan (ConDecl DocNameI) -> Html
doConstr (Char
'=' Char -> String -> String
forall a. a -> [a] -> [a]
: Char -> String
forall a. a -> [a]
repeat Char
'|') (DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
-> [GenLocated SrcSpan (ConDecl DocNameI)]
forall a. DataDefnCons a -> [a]
forall (t :: Type -> Type) a. Foldable t => t a -> [a]
toList DataDefnCons (LConDecl DocNameI)
DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
cons) [Html] -> [Html] -> [Html]
forall a. [a] -> [a] -> [a]
++ [Html]
pats1)
| Bool
otherwise =
(Html
dataHeader Html -> Html -> Html
<+> String -> Html
keyword String
"where")
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Bool -> [Html] -> Html
shortSubDecls Bool
dataInst ((GenLocated SrcSpan (ConDecl DocNameI) -> Html)
-> [GenLocated SrcSpan (ConDecl DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpan (ConDecl DocNameI) -> Html
doGADTConstr (DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
-> [GenLocated SrcSpan (ConDecl DocNameI)]
forall a. DataDefnCons a -> [a]
forall (t :: Type -> Type) a. Foldable t => t a -> [a]
toList DataDefnCons (LConDecl DocNameI)
DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
cons) [Html] -> [Html] -> [Html]
forall a. [a] -> [a] -> [a]
++ [Html]
pats1)
where
dataHeader :: Html
dataHeader
| Bool
dataInst = Html
noHtml
| Bool
otherwise = Bool -> TyClDecl DocNameI -> Bool -> Qualification -> Html
ppDataHeader Bool
summary TyClDecl DocNameI
dataDecl Bool
unicode Qualification
qual
doConstr :: Char -> GenLocated SrcSpan (ConDecl DocNameI) -> Html
doConstr Char
c GenLocated SrcSpan (ConDecl DocNameI)
con = String -> Html
forall a. HTML a => a -> Html
toHtml [Char
c] Html -> Html -> Html
<+> Bool -> ConDecl DocNameI -> Bool -> Qualification -> Html
ppShortConstr Bool
summary (GenLocated SrcSpan (ConDecl DocNameI) -> ConDecl DocNameI
forall l e. GenLocated l e -> e
unLoc GenLocated SrcSpan (ConDecl DocNameI)
con) Bool
unicode Qualification
qual
doGADTConstr :: GenLocated SrcSpan (ConDecl DocNameI) -> Html
doGADTConstr GenLocated SrcSpan (ConDecl DocNameI)
con = Bool -> ConDecl DocNameI -> Bool -> Qualification -> Html
ppShortConstr Bool
summary (GenLocated SrcSpan (ConDecl DocNameI) -> ConDecl DocNameI
forall l e. GenLocated l e -> e
unLoc GenLocated SrcSpan (ConDecl DocNameI)
con) Bool
unicode Qualification
qual
cons :: DataDefnCons (LConDecl DocNameI)
cons = HsDataDefn DocNameI -> DataDefnCons (LConDecl DocNameI)
forall pass. HsDataDefn pass -> DataDefnCons (LConDecl pass)
dd_cons (TyClDecl DocNameI -> HsDataDefn DocNameI
forall pass. TyClDecl pass -> HsDataDefn pass
tcdDataDefn TyClDecl DocNameI
dataDecl)
isH98 :: Bool
isH98 = ((ConDecl DocNameI -> Bool)
-> DataDefnCons (ConDecl DocNameI) -> Bool)
-> DataDefnCons (ConDecl DocNameI)
-> (ConDecl DocNameI -> Bool)
-> Bool
forall a b c. (a -> b -> c) -> b -> a -> c
flip (ConDecl DocNameI -> Bool)
-> DataDefnCons (ConDecl DocNameI) -> Bool
forall (t :: Type -> Type) a.
Foldable t =>
(a -> Bool) -> t a -> Bool
any (GenLocated SrcSpan (ConDecl DocNameI) -> ConDecl DocNameI
forall l e. GenLocated l e -> e
unLoc (GenLocated SrcSpan (ConDecl DocNameI) -> ConDecl DocNameI)
-> DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
-> DataDefnCons (ConDecl DocNameI)
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> DataDefnCons (LConDecl DocNameI)
DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
cons) ((ConDecl DocNameI -> Bool) -> Bool)
-> (ConDecl DocNameI -> Bool) -> Bool
forall a b. (a -> b) -> a -> b
$ \case
ConDeclH98{} -> Bool
True
ConDeclGADT{} -> Bool
False
pats1 :: [Html]
pats1 =
[ [Html] -> Html
hsep
[ String -> Html
keyword String
"pattern"
, [Html] -> Html
hsep ([Html] -> Html) -> [Html] -> Html
forall a b. (a -> b) -> a -> b
$ Html -> [Html] -> [Html]
punctuate Html
comma ([Html] -> [Html]) -> [Html] -> [Html]
forall a b. (a -> b) -> a -> b
$ (GenLocated SrcSpanAnnN DocName -> Html)
-> [GenLocated SrcSpanAnnN DocName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> OccName -> Html
ppBinder Bool
summary (OccName -> Html)
-> (GenLocated SrcSpanAnnN DocName -> OccName)
-> GenLocated SrcSpanAnnN DocName
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnN DocName -> OccName
forall a. NamedThing a => a -> OccName
getOccName) [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames
, Bool -> Html
dcolon Bool
unicode
, Bool -> Qualification -> LHsSigType DocNameI -> Html
ppPatSigType Bool
unicode Qualification
qual LHsSigType DocNameI
typ
]
| (SigD XSigD DocNameI
_ (PatSynSig XPatSynSig DocNameI
_ [LIdP DocNameI]
lnames LHsSigType DocNameI
typ), DocForDecl DocName
_) <- [(HsDecl DocNameI, DocForDecl DocName)]
pats
]
ppShortDataDecl Bool
_ Bool
_ TyClDecl DocNameI
_ [(HsDecl DocNameI, DocForDecl DocName)]
_ Bool
_ Qualification
_ = String -> Html
forall a. HasCallStack => String -> a
error String
"ppShortDataDecl"
ppDataDecl
:: Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> [(DocName, DocForDecl DocName)]
-> SrcSpan
-> Documentation DocName
-> TyClDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> Splice
-> Unicode
-> Maybe Package
-> Qualification
-> Html
ppDataDecl :: Bool
-> LinksInfo
-> [DocInstance DocNameI]
-> [(DocName, Fixity)]
-> [(DocName, DocForDecl DocName)]
-> SrcSpan
-> Documentation DocName
-> TyClDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppDataDecl
Bool
summary
LinksInfo
links
[DocInstance DocNameI]
instances
[(DocName, Fixity)]
fixities
[(DocName, DocForDecl DocName)]
subdocs
SrcSpan
loc
Documentation DocName
doc
dataDecl :: TyClDecl DocNameI
dataDecl@(DataDecl {})
[(HsDecl DocNameI, DocForDecl DocName)]
pats
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
| Bool
summary = Bool
-> Bool
-> TyClDecl DocNameI
-> [(HsDecl DocNameI, DocForDecl DocName)]
-> Bool
-> Qualification
-> Html
ppShortDataDecl Bool
summary Bool
False TyClDecl DocNameI
dataDecl [(HsDecl DocNameI, DocForDecl DocName)]
pats Bool
unicode Qualification
qual
| Bool
otherwise = Html
header_ Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Maybe Name
-> Maybe String -> Qualification -> Documentation DocName -> Html
docSection Maybe Name
curname Maybe String
pkg Qualification
qual Documentation DocName
doc Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
constrBit Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
patternBit Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
instancesBit
where
docname :: DocName
docname = TyClDecl DocNameI -> DocName
tcdNameI TyClDecl DocNameI
dataDecl
curname :: Maybe Name
curname = Name -> Maybe Name
forall a. a -> Maybe a
Just (Name -> Maybe Name) -> Name -> Maybe Name
forall a b. (a -> b) -> a -> b
$ DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
docname
cons :: DataDefnCons (LConDecl DocNameI)
cons = HsDataDefn DocNameI -> DataDefnCons (LConDecl DocNameI)
forall pass. HsDataDefn pass -> DataDefnCons (LConDecl pass)
dd_cons (TyClDecl DocNameI -> HsDataDefn DocNameI
forall pass. TyClDecl pass -> HsDataDefn pass
tcdDataDefn TyClDecl DocNameI
dataDecl)
isH98 :: Bool
isH98 = ((ConDecl DocNameI -> Bool)
-> DataDefnCons (ConDecl DocNameI) -> Bool)
-> DataDefnCons (ConDecl DocNameI)
-> (ConDecl DocNameI -> Bool)
-> Bool
forall a b c. (a -> b -> c) -> b -> a -> c
flip (ConDecl DocNameI -> Bool)
-> DataDefnCons (ConDecl DocNameI) -> Bool
forall (t :: Type -> Type) a.
Foldable t =>
(a -> Bool) -> t a -> Bool
any (GenLocated SrcSpan (ConDecl DocNameI) -> ConDecl DocNameI
forall l e. GenLocated l e -> e
unLoc (GenLocated SrcSpan (ConDecl DocNameI) -> ConDecl DocNameI)
-> DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
-> DataDefnCons (ConDecl DocNameI)
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> DataDefnCons (LConDecl DocNameI)
DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
cons) ((ConDecl DocNameI -> Bool) -> Bool)
-> (ConDecl DocNameI -> Bool) -> Bool
forall a b. (a -> b) -> a -> b
$ \case
ConDeclH98{} -> Bool
True
ConDeclGADT{} -> Bool
False
header_ :: Html
header_ =
LinksInfo -> SrcSpan -> Bool -> DocName -> Html -> Html
topDeclElem LinksInfo
links SrcSpan
loc Bool
splice DocName
docname (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$
Bool -> TyClDecl DocNameI -> Bool -> Qualification -> Html
ppDataHeader Bool
summary TyClDecl DocNameI
dataDecl Bool
unicode Qualification
qual Html -> Html -> Html
<+> Html
whereBit Html -> Html -> Html
<+> Html
fix
fix :: Html
fix = [(DocName, Fixity)] -> Qualification -> Html
ppFixities (((DocName, Fixity) -> Bool)
-> [(DocName, Fixity)] -> [(DocName, Fixity)]
forall a. (a -> Bool) -> [a] -> [a]
filter (\(DocName
n, Fixity
_) -> DocName
n DocName -> DocName -> Bool
forall a. Eq a => a -> a -> Bool
== DocName
docname) [(DocName, Fixity)]
fixities) Qualification
qual
whereBit :: Html
whereBit
| DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI)) -> Bool
forall a. DataDefnCons a -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null DataDefnCons (LConDecl DocNameI)
DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
cons
, [(HsDecl DocNameI, DocForDecl DocName)] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null [(HsDecl DocNameI, DocForDecl DocName)]
pats =
Html
noHtml
| Bool
isH98 = Html
noHtml
| Bool
otherwise = String -> Html
keyword String
"where"
constrBit :: Html
constrBit =
Maybe String -> Qualification -> [SubDecl] -> Html
subConstructors
Maybe String
pkg
Qualification
qual
[ [(DocName, DocForDecl DocName)]
-> [(DocName, Fixity)]
-> Bool
-> Maybe String
-> Qualification
-> LConDecl DocNameI
-> SubDecl
ppSideBySideConstr [(DocName, DocForDecl DocName)]
subdocs [(DocName, Fixity)]
subfixs Bool
unicode Maybe String
pkg Qualification
qual LConDecl DocNameI
GenLocated SrcSpan (ConDecl DocNameI)
c
| GenLocated SrcSpan (ConDecl DocNameI)
c <- DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
-> [GenLocated SrcSpan (ConDecl DocNameI)]
forall a. DataDefnCons a -> [a]
forall (t :: Type -> Type) a. Foldable t => t a -> [a]
toList DataDefnCons (LConDecl DocNameI)
DataDefnCons (GenLocated SrcSpan (ConDecl DocNameI))
cons
, let subfixs :: [(DocName, Fixity)]
subfixs =
((DocName, Fixity) -> Bool)
-> [(DocName, Fixity)] -> [(DocName, Fixity)]
forall a. (a -> Bool) -> [a] -> [a]
filter
( \(DocName
n, Fixity
_) ->
(DocName -> Bool) -> NonEmpty DocName -> Bool
forall (t :: Type -> Type) a.
Foldable t =>
(a -> Bool) -> t a -> Bool
any
(\DocName
cn -> DocName
cn DocName -> DocName -> Bool
forall a. Eq a => a -> a -> Bool
== DocName
n)
(GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unL (GenLocated SrcSpanAnnN DocName -> DocName)
-> NonEmpty (GenLocated SrcSpanAnnN DocName) -> NonEmpty DocName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> ConDecl DocNameI -> NonEmpty (GenLocated SrcSpanAnnN DocName)
getConNamesI (GenLocated SrcSpan (ConDecl DocNameI) -> ConDecl DocNameI
forall l e. GenLocated l e -> e
unLoc GenLocated SrcSpan (ConDecl DocNameI)
c))
)
[(DocName, Fixity)]
fixities
]
patternBit :: Html
patternBit =
Maybe String -> Qualification -> [SubDecl] -> Html
subPatterns
Maybe String
pkg
Qualification
qual
[ [(DocName, Fixity)]
-> Bool
-> Qualification
-> [GenLocated SrcSpanAnnN DocName]
-> LHsSigType DocNameI
-> DocForDecl DocName
-> SubDecl
ppSideBySidePat [(DocName, Fixity)]
subfixs Bool
unicode Qualification
qual [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames LHsSigType DocNameI
typ DocForDecl DocName
d
| (SigD XSigD DocNameI
_ (PatSynSig XPatSynSig DocNameI
_ [LIdP DocNameI]
lnames LHsSigType DocNameI
typ), DocForDecl DocName
d) <- [(HsDecl DocNameI, DocForDecl DocName)]
pats
, let subfixs :: [(DocName, Fixity)]
subfixs =
((DocName, Fixity) -> Bool)
-> [(DocName, Fixity)] -> [(DocName, Fixity)]
forall a. (a -> Bool) -> [a] -> [a]
filter
( \(DocName
n, Fixity
_) ->
(DocName -> Bool) -> [DocName] -> Bool
forall (t :: Type -> Type) a.
Foldable t =>
(a -> Bool) -> t a -> Bool
any
(\DocName
cn -> DocName
cn DocName -> DocName -> Bool
forall a. Eq a => a -> a -> Bool
== DocName
n)
((GenLocated SrcSpanAnnN DocName -> DocName)
-> [GenLocated SrcSpanAnnN DocName] -> [DocName]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc [LIdP DocNameI]
[GenLocated SrcSpanAnnN DocName]
lnames)
)
[(DocName, Fixity)]
fixities
]
instancesBit :: Html
instancesBit =
LinksInfo
-> InstOrigin DocName
-> [DocInstance DocNameI]
-> Bool
-> Bool
-> Maybe String
-> Qualification
-> Html
ppInstances
LinksInfo
links
(DocName -> InstOrigin DocName
forall name. name -> InstOrigin name
OriginData DocName
docname)
[DocInstance DocNameI]
instances
Bool
splice
Bool
unicode
Maybe String
pkg
Qualification
qual
ppDataDecl Bool
_ LinksInfo
_ [DocInstance DocNameI]
_ [(DocName, Fixity)]
_ [(DocName, DocForDecl DocName)]
_ SrcSpan
_ Documentation DocName
_ TyClDecl DocNameI
_ [(HsDecl DocNameI, DocForDecl DocName)]
_ Bool
_ Bool
_ Maybe String
_ Qualification
_ = String -> Html
forall a. HasCallStack => String -> a
error String
"ppDataDecl"
ppShortConstr :: Bool -> ConDecl DocNameI -> Unicode -> Qualification -> Html
ppShortConstr :: Bool -> ConDecl DocNameI -> Bool -> Qualification -> Html
ppShortConstr Bool
summary ConDecl DocNameI
con Bool
unicode Qualification
qual = Html
cHead Html -> Html -> Html
<+> Html
cBody Html -> Html -> Html
<+> Html
cFoot
where
(Html
cHead, Html
cBody, Html
cFoot) = Bool
-> Bool
-> ConDecl DocNameI
-> Bool
-> Qualification
-> (Html, Html, Html)
ppShortConstrParts Bool
summary Bool
False ConDecl DocNameI
con Bool
unicode Qualification
qual
ppShortConstrParts :: Bool -> Bool -> ConDecl DocNameI -> Unicode -> Qualification -> (Html, Html, Html)
ppShortConstrParts :: Bool
-> Bool
-> ConDecl DocNameI
-> Bool
-> Qualification
-> (Html, Html, Html)
ppShortConstrParts Bool
summary Bool
dataInst ConDecl DocNameI
con Bool
unicode Qualification
qual =
case ConDecl DocNameI
con of
ConDeclH98
{ con_args :: forall pass. ConDecl pass -> HsConDeclH98Details pass
con_args = HsConDeclH98Details DocNameI
det
, con_ex_tvs :: forall pass. ConDecl pass -> [LHsTyVarBndr Specificity pass]
con_ex_tvs = [LHsTyVarBndr Specificity DocNameI]
tyVars
, con_forall :: forall pass. ConDecl pass -> Bool
con_forall = Bool
forall_
, con_mb_cxt :: forall pass. ConDecl pass -> Maybe (LHsContext pass)
con_mb_cxt = Maybe (LHsContext DocNameI)
cxt
} ->
let context :: HsContext DocNameI
context = Maybe (LHsContext DocNameI) -> HsContext DocNameI
fromMaybeContext Maybe (LHsContext DocNameI)
cxt
header_ :: Html
header_ = Bool
-> [LHsTyVarBndr Specificity DocNameI]
-> HsContext DocNameI
-> Bool
-> Qualification
-> Html
ppConstrHdr Bool
forall_ [LHsTyVarBndr Specificity DocNameI]
tyVars HsContext DocNameI
context Bool
unicode Qualification
qual
in case HsConDeclH98Details DocNameI
det of
PrefixCon [Void]
_ [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))]
args ->
( Html
header_ Html -> Html -> Html
<+> [Html] -> Html
hsep (Html
ppOcc Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
: (HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html)
-> [HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
-> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (GenLocated SrcSpanAnnA (HsType DocNameI) -> Html)
-> (HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI))
-> HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI)
forall pass a. HsScaled pass a -> a
hsScaledThing) [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))]
[HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
args)
, Html
noHtml
, Html
noHtml
)
RecCon (L SrcSpan
_ [GenLocated SrcSpan (ConDeclField DocNameI)]
fields) ->
( Html
header_ Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
ppOcc Html -> Html -> Html
<+> Char -> Html
char Char
'{'
, Bool -> [Html] -> Html
shortSubDecls
Bool
dataInst
[ Bool -> Bool -> Qualification -> ConDeclField DocNameI -> Html
ppShortField Bool
summary Bool
unicode Qualification
qual ConDeclField DocNameI
field
| L SrcSpan
_ ConDeclField DocNameI
field <- [GenLocated SrcSpan (ConDeclField DocNameI)]
fields
]
, Char -> Html
char Char
'}'
)
InfixCon HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
arg1 HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
arg2 ->
( Html
header_
Html -> Html -> Html
<+> [Html] -> Html
hsep
[ Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI)
forall pass a. HsScaled pass a -> a
hsScaledThing HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
arg1)
, Html
ppOccInfix
, Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI)
forall pass a. HsScaled pass a -> a
hsScaledThing HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
arg2)
]
, Html
noHtml
, Html
noHtml
)
ConDeclGADT{} ->
( [Html] -> Html
hsep [Html
ppOcc, Bool -> Html
dcolon Bool
unicode, Bool
-> Qualification
-> HideEmptyContexts
-> LHsSigType DocNameI
-> Html
ppLSigType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (ConDecl DocNameI -> LHsSigType DocNameI
getGADTConType ConDecl DocNameI
con)]
, Html
noHtml
, Html
noHtml
)
where
occ :: [OccName]
occ = NonEmpty OccName -> [OccName]
forall a. NonEmpty a -> [a]
forall (t :: Type -> Type) a. Foldable t => t a -> [a]
toList (NonEmpty OccName -> [OccName]) -> NonEmpty OccName -> [OccName]
forall a b. (a -> b) -> a -> b
$ Name -> OccName
nameOccName (Name -> OccName)
-> (GenLocated SrcSpanAnnN DocName -> Name)
-> GenLocated SrcSpanAnnN DocName
-> OccName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocName -> Name
forall a. NamedThing a => a -> Name
getName (DocName -> Name)
-> (GenLocated SrcSpanAnnN DocName -> DocName)
-> GenLocated SrcSpanAnnN DocName
-> Name
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unL (GenLocated SrcSpanAnnN DocName -> OccName)
-> NonEmpty (GenLocated SrcSpanAnnN DocName) -> NonEmpty OccName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> ConDecl DocNameI -> NonEmpty (GenLocated SrcSpanAnnN DocName)
getConNamesI ConDecl DocNameI
con
ppOcc :: Html
ppOcc = [Html] -> Html
hsep (Html -> [Html] -> [Html]
punctuate Html
comma ((OccName -> Html) -> [OccName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> OccName -> Html
ppBinder Bool
summary) [OccName]
occ))
ppOccInfix :: Html
ppOccInfix = [Html] -> Html
hsep (Html -> [Html] -> [Html]
punctuate Html
comma ((OccName -> Html) -> [OccName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> OccName -> Html
ppBinderInfix Bool
summary) [OccName]
occ))
ppSideBySideConstr
:: [(DocName, DocForDecl DocName)]
-> [(DocName, Fixity)]
-> Unicode
-> Maybe Package
-> Qualification
-> LConDecl DocNameI
-> SubDecl
ppSideBySideConstr :: [(DocName, DocForDecl DocName)]
-> [(DocName, Fixity)]
-> Bool
-> Maybe String
-> Qualification
-> LConDecl DocNameI
-> SubDecl
ppSideBySideConstr [(DocName, DocForDecl DocName)]
subdocs [(DocName, Fixity)]
fixities Bool
unicode Maybe String
pkg Qualification
qual (L SrcSpan
_ ConDecl DocNameI
con) =
( Html
decl
, Maybe (MDoc DocName)
mbDoc
, [Html]
fieldPart
)
where
L SrcSpanAnnN
_ DocName
aConName :| [GenLocated SrcSpanAnnN DocName]
_ = ConDecl DocNameI -> NonEmpty (GenLocated SrcSpanAnnN DocName)
getConNamesI ConDecl DocNameI
con
fixity :: Html
fixity = [(DocName, Fixity)] -> Qualification -> Html
ppFixities [(DocName, Fixity)]
fixities Qualification
qual
occ :: [OccName]
occ = NonEmpty OccName -> [OccName]
forall a. NonEmpty a -> [a]
forall (t :: Type -> Type) a. Foldable t => t a -> [a]
toList (NonEmpty OccName -> [OccName]) -> NonEmpty OccName -> [OccName]
forall a b. (a -> b) -> a -> b
$ Name -> OccName
nameOccName (Name -> OccName)
-> (GenLocated SrcSpanAnnN DocName -> Name)
-> GenLocated SrcSpanAnnN DocName
-> OccName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocName -> Name
forall a. NamedThing a => a -> Name
getName (DocName -> Name)
-> (GenLocated SrcSpanAnnN DocName -> DocName)
-> GenLocated SrcSpanAnnN DocName
-> Name
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unL (GenLocated SrcSpanAnnN DocName -> OccName)
-> NonEmpty (GenLocated SrcSpanAnnN DocName) -> NonEmpty OccName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> ConDecl DocNameI -> NonEmpty (GenLocated SrcSpanAnnN DocName)
getConNamesI ConDecl DocNameI
con
ppOcc :: Html
ppOcc = [Html] -> Html
hsep (Html -> [Html] -> [Html]
punctuate Html
comma ((OccName -> Html) -> [OccName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> OccName -> Html
ppBinder Bool
False) [OccName]
occ))
ppOccInfix :: Html
ppOccInfix = [Html] -> Html
hsep (Html -> [Html] -> [Html]
punctuate Html
comma ((OccName -> Html) -> [OccName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> OccName -> Html
ppBinderInfix Bool
False) [OccName]
occ))
argDocs :: FnArgsDoc DocName
argDocs = FnArgsDoc DocName
-> (DocForDecl DocName -> FnArgsDoc DocName)
-> Maybe (DocForDecl DocName)
-> FnArgsDoc DocName
forall b a. b -> (a -> b) -> Maybe a -> b
maybe FnArgsDoc DocName
forall k a. Map k a
Map.empty DocForDecl DocName -> FnArgsDoc DocName
forall a b. (a, b) -> b
snd (DocName
-> [(DocName, DocForDecl DocName)] -> Maybe (DocForDecl DocName)
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup DocName
aConName [(DocName, DocForDecl DocName)]
subdocs)
hasArgDocs :: Bool
hasArgDocs = Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ FnArgsDoc DocName -> Bool
forall k a. Map k a -> Bool
Map.null FnArgsDoc DocName
argDocs
decl :: Html
decl = case ConDecl DocNameI
con of
ConDeclH98
{ con_args :: forall pass. ConDecl pass -> HsConDeclH98Details pass
con_args = HsConDeclH98Details DocNameI
det
, con_ex_tvs :: forall pass. ConDecl pass -> [LHsTyVarBndr Specificity pass]
con_ex_tvs = [LHsTyVarBndr Specificity DocNameI]
tyVars
, con_forall :: forall pass. ConDecl pass -> Bool
con_forall = Bool
forall_
, con_mb_cxt :: forall pass. ConDecl pass -> Maybe (LHsContext pass)
con_mb_cxt = Maybe (LHsContext DocNameI)
cxt
} ->
let context :: HsContext DocNameI
context = Maybe (LHsContext DocNameI) -> HsContext DocNameI
fromMaybeContext Maybe (LHsContext DocNameI)
cxt
header_ :: Html
header_ = Bool
-> [LHsTyVarBndr Specificity DocNameI]
-> HsContext DocNameI
-> Bool
-> Qualification
-> Html
ppConstrHdr Bool
forall_ [LHsTyVarBndr Specificity DocNameI]
tyVars HsContext DocNameI
context Bool
unicode Qualification
qual
in case HsConDeclH98Details DocNameI
det of
PrefixCon [Void]
_ [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))]
args
| Bool
hasArgDocs -> Html
header_ Html -> Html -> Html
<+> Html
ppOcc Html -> Html -> Html
<+> Html
fixity
| Bool
otherwise ->
[Html] -> Html
hsep
[ Html
header_ Html -> Html -> Html
<+> Html
ppOcc
, [Html] -> Html
hsep ((HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html)
-> [HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
-> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (GenLocated SrcSpanAnnA (HsType DocNameI) -> Html)
-> (HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI))
-> HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI)
forall pass a. HsScaled pass a -> a
hsScaledThing) [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))]
[HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
args)
, Html
fixity
]
RecCon XRec DocNameI [LConDeclField DocNameI]
_ -> Html
header_ Html -> Html -> Html
<+> Html
ppOcc Html -> Html -> Html
<+> Html
fixity
InfixCon HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
arg1 HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
arg2
| Bool
hasArgDocs -> Html
header_ Html -> Html -> Html
<+> Html
ppOcc Html -> Html -> Html
<+> Html
fixity
| Bool
otherwise ->
[Html] -> Html
hsep
[ Html
header_ Html -> Html -> Html
<+> Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI)
forall pass a. HsScaled pass a -> a
hsScaledThing HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
arg1)
, Html
ppOccInfix
, Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI)
forall pass a. HsScaled pass a -> a
hsScaledThing HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
arg2)
, Html
fixity
]
ConDeclGADT{}
| Bool
hasArgDocs Bool -> Bool -> Bool
|| Bool -> Bool
not ([Html] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null [Html]
fieldPart) -> Html
ppOcc Html -> Html -> Html
<+> Html
fixity
| Bool
otherwise ->
[Html] -> Html
hsep
[ Html
ppOcc
, Bool -> Html
dcolon Bool
unicode
,
Bool
-> Qualification
-> HideEmptyContexts
-> LHsSigType DocNameI
-> Html
ppLSigType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts (ConDecl DocNameI -> LHsSigType DocNameI
getGADTConType ConDecl DocNameI
con)
, Html
fixity
]
fieldPart :: [Html]
fieldPart = case ConDecl DocNameI
con of
ConDeclGADT{con_g_args :: forall pass. ConDecl pass -> HsConDeclGADTDetails pass
con_g_args = HsConDeclGADTDetails DocNameI
con_args'} -> case HsConDeclGADTDetails DocNameI
con_args' of
RecConGADT XRecConGADT DocNameI
_ XRec DocNameI [LConDeclField DocNameI]
_ -> [[HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
-> Html
doConstrArgsWithDocs []]
PrefixConGADT XPrefixConGADT DocNameI
_ [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))]
args | Bool
hasArgDocs -> [[HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
-> Html
doConstrArgsWithDocs [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))]
[HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
args]
HsConDeclGADTDetails DocNameI
_ -> []
ConDeclH98{con_args :: forall pass. ConDecl pass -> HsConDeclH98Details pass
con_args = HsConDeclH98Details DocNameI
con_args'} -> case HsConDeclH98Details DocNameI
con_args' of
RecCon (L SrcSpan
_ [GenLocated SrcSpan (ConDeclField DocNameI)]
fields) -> [[GenLocated SrcSpan (ConDeclField DocNameI)] -> Html
doRecordFields [GenLocated SrcSpan (ConDeclField DocNameI)]
fields]
PrefixCon [Void]
_ [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))]
args | Bool
hasArgDocs -> [[HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
-> Html
doConstrArgsWithDocs [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))]
[HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
args]
InfixCon HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
arg1 HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
arg2 | Bool
hasArgDocs -> [[HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
-> Html
doConstrArgsWithDocs [HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
arg1, HsScaled DocNameI (XRec DocNameI (HsType DocNameI))
HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
arg2]]
HsConDeclH98Details DocNameI
_ -> []
doRecordFields :: [GenLocated SrcSpan (ConDeclField DocNameI)] -> Html
doRecordFields [GenLocated SrcSpan (ConDeclField DocNameI)]
fields =
Maybe String -> Qualification -> [SubDecl] -> Html
subFields
Maybe String
pkg
Qualification
qual
((ConDeclField DocNameI -> SubDecl)
-> [ConDeclField DocNameI] -> [SubDecl]
forall a b. (a -> b) -> [a] -> [b]
map ([(DocName, DocForDecl DocName)]
-> Bool -> Qualification -> ConDeclField DocNameI -> SubDecl
ppSideBySideField [(DocName, DocForDecl DocName)]
subdocs Bool
unicode Qualification
qual) ((GenLocated SrcSpan (ConDeclField DocNameI)
-> ConDeclField DocNameI)
-> [GenLocated SrcSpan (ConDeclField DocNameI)]
-> [ConDeclField DocNameI]
forall a b. (a -> b) -> [a] -> [b]
map GenLocated SrcSpan (ConDeclField DocNameI) -> ConDeclField DocNameI
forall l e. GenLocated l e -> e
unLoc [GenLocated SrcSpan (ConDeclField DocNameI)]
fields))
doConstrArgsWithDocs :: [HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
-> Html
doConstrArgsWithDocs [HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
args = Maybe String -> Qualification -> [SubDecl] -> Html
subFields Maybe String
pkg Qualification
qual ([SubDecl] -> Html) -> [SubDecl] -> Html
forall a b. (a -> b) -> a -> b
$ case ConDecl DocNameI
con of
ConDeclH98{} ->
[ (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
arg, Maybe (MDoc DocName)
mdoc, [])
| (Int
i, GenLocated SrcSpanAnnA (HsType DocNameI)
arg) <- [Int]
-> [GenLocated SrcSpanAnnA (HsType DocNameI)]
-> [(Int, GenLocated SrcSpanAnnA (HsType DocNameI))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0 ..] ((HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI))
-> [HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
-> [GenLocated SrcSpanAnnA (HsType DocNameI)]
forall a b. (a -> b) -> [a] -> [b]
map HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))
-> GenLocated SrcSpanAnnA (HsType DocNameI)
forall pass a. HsScaled pass a -> a
hsScaledThing [HsScaled DocNameI (GenLocated SrcSpanAnnA (HsType DocNameI))]
args)
, let mdoc :: Maybe (MDoc DocName)
mdoc = Int -> FnArgsDoc DocName -> Maybe (MDoc DocName)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup Int
i FnArgsDoc DocName
argDocs
]
ConDeclGADT{} ->
Bool
-> Qualification
-> HsSigType DocNameI
-> FnArgsDoc DocName
-> [(DocName, DocForDecl DocName)]
-> Html
-> HideEmptyContexts
-> [SubDecl]
ppSubSigLike
Bool
unicode
Qualification
qual
(GenLocated SrcSpanAnnA (HsSigType DocNameI) -> HsSigType DocNameI
forall l e. GenLocated l e -> e
unLoc (ConDecl DocNameI -> LHsSigType DocNameI
getGADTConType ConDecl DocNameI
con))
FnArgsDoc DocName
argDocs
[(DocName, DocForDecl DocName)]
subdocs
(Bool -> Html
dcolon Bool
unicode)
HideEmptyContexts
HideEmptyContexts
mbDoc :: Maybe (MDoc DocName)
mbDoc =
DocName
-> [(DocName, DocForDecl DocName)] -> Maybe (DocForDecl DocName)
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup DocName
aConName [(DocName, DocForDecl DocName)]
subdocs
Maybe (DocForDecl DocName)
-> (DocForDecl DocName -> Maybe (MDoc DocName))
-> Maybe (MDoc DocName)
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: Type -> Type) a b. Monad m => m a -> (a -> m b) -> m b
>>= Documentation DocName -> Maybe (MDoc DocName)
forall name. Documentation name -> Maybe (MDoc name)
combineDocumentation (Documentation DocName -> Maybe (MDoc DocName))
-> (DocForDecl DocName -> Documentation DocName)
-> DocForDecl DocName
-> Maybe (MDoc DocName)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocForDecl DocName -> Documentation DocName
forall a b. (a, b) -> a
fst
ppConstrHdr
:: Bool
-> [LHsTyVarBndr Specificity DocNameI]
-> HsContext DocNameI
-> Unicode
-> Qualification
-> Html
ppConstrHdr :: Bool
-> [LHsTyVarBndr Specificity DocNameI]
-> HsContext DocNameI
-> Bool
-> Qualification
-> Html
ppConstrHdr Bool
forall_ [LHsTyVarBndr Specificity DocNameI]
tvs HsContext DocNameI
ctxt Bool
unicode Qualification
qual = Html
ppForall Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
ppCtxt
where
ppForall :: Html
ppForall
| [GenLocated SrcSpanAnnA (HsTyVarBndr Specificity DocNameI)] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null [LHsTyVarBndr Specificity DocNameI]
[GenLocated SrcSpanAnnA (HsTyVarBndr Specificity DocNameI)]
tvs Bool -> Bool -> Bool
|| Bool -> Bool
not Bool
forall_ = Html
noHtml
| Bool
otherwise = Bool -> Qualification -> HsForAllTelescope DocNameI -> Html
ppForAllPart Bool
unicode Qualification
qual (XHsForAllInvis DocNameI
-> [LHsTyVarBndr Specificity DocNameI]
-> HsForAllTelescope DocNameI
forall pass.
XHsForAllInvis pass
-> [LHsTyVarBndr Specificity pass] -> HsForAllTelescope pass
HsForAllInvis XHsForAllInvis DocNameI
NoExtField
noExtField [LHsTyVarBndr Specificity DocNameI]
tvs)
ppCtxt :: Html
ppCtxt
| [GenLocated SrcSpanAnnA (HsType DocNameI)] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
ctxt = Html
noHtml
| Bool
otherwise =
HsContext DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppContextNoArrow HsContext DocNameI
ctxt Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
Html -> Html -> Html
<+> Bool -> Html
darrow Bool
unicode
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ String -> Html
forall a. HTML a => a -> Html
toHtml String
" "
ppSideBySideField
:: [(DocName, DocForDecl DocName)]
-> Unicode
-> Qualification
-> ConDeclField DocNameI
-> SubDecl
ppSideBySideField :: [(DocName, DocForDecl DocName)]
-> Bool -> Qualification -> ConDeclField DocNameI -> SubDecl
ppSideBySideField [(DocName, DocForDecl DocName)]
subdocs Bool
unicode Qualification
qual (ConDeclField XConDeclField DocNameI
_ [LFieldOcc DocNameI]
names XRec DocNameI (HsType DocNameI)
ltype Maybe (LHsDoc DocNameI)
_) =
( [Html] -> Html
hsep
( Html -> [Html] -> [Html]
punctuate
Html
comma
[ Bool -> OccName -> Html
ppBinder Bool
False (RdrName -> OccName
rdrNameOcc XCFieldOcc DocNameI
RdrName
field)
| L SrcSpanAnnA
_ FieldOcc DocNameI
name <- [LFieldOcc DocNameI]
[GenLocated SrcSpanAnnA (FieldOcc DocNameI)]
names
, let field :: XCFieldOcc DocNameI
field = (forall pass. FieldOcc pass -> XCFieldOcc pass
foExt) FieldOcc DocNameI
name
]
)
Html -> Html -> Html
<+> Bool -> Html
dcolon Bool
unicode
Html -> Html -> Html
<+> Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts XRec DocNameI (HsType DocNameI)
ltype
, Maybe (MDoc DocName)
mbDoc
, []
)
where
mbDoc :: Maybe (MDoc DocName)
mbDoc = DocName
-> [(DocName, DocForDecl DocName)] -> Maybe (DocForDecl DocName)
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup (GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc (GenLocated SrcSpanAnnN DocName -> DocName)
-> (FieldOcc DocNameI -> GenLocated SrcSpanAnnN DocName)
-> FieldOcc DocNameI
-> DocName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FieldOcc DocNameI -> LIdP DocNameI
FieldOcc DocNameI -> GenLocated SrcSpanAnnN DocName
forall pass. FieldOcc pass -> LIdP pass
foLabel (FieldOcc DocNameI -> DocName) -> FieldOcc DocNameI -> DocName
forall a b. (a -> b) -> a -> b
$ GenLocated SrcSpanAnnA (FieldOcc DocNameI) -> FieldOcc DocNameI
forall l e. GenLocated l e -> e
unLoc GenLocated SrcSpanAnnA (FieldOcc DocNameI)
declName) [(DocName, DocForDecl DocName)]
subdocs Maybe (DocForDecl DocName)
-> (DocForDecl DocName -> Maybe (MDoc DocName))
-> Maybe (MDoc DocName)
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: Type -> Type) a b. Monad m => m a -> (a -> m b) -> m b
>>= Documentation DocName -> Maybe (MDoc DocName)
forall name. Documentation name -> Maybe (MDoc name)
combineDocumentation (Documentation DocName -> Maybe (MDoc DocName))
-> (DocForDecl DocName -> Documentation DocName)
-> DocForDecl DocName
-> Maybe (MDoc DocName)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DocForDecl DocName -> Documentation DocName
forall a b. (a, b) -> a
fst
declName :: GenLocated SrcSpanAnnA (FieldOcc DocNameI)
declName = case [GenLocated SrcSpanAnnA (FieldOcc DocNameI)]
-> Maybe (GenLocated SrcSpanAnnA (FieldOcc DocNameI))
forall a. [a] -> Maybe a
Maybe.listToMaybe [LFieldOcc DocNameI]
[GenLocated SrcSpanAnnA (FieldOcc DocNameI)]
names of
Maybe (GenLocated SrcSpanAnnA (FieldOcc DocNameI))
Nothing -> String -> GenLocated SrcSpanAnnA (FieldOcc DocNameI)
forall a. HasCallStack => String -> a
error String
"No names. An invariant was broken. Please report this to the Haddock project"
Just GenLocated SrcSpanAnnA (FieldOcc DocNameI)
hd -> GenLocated SrcSpanAnnA (FieldOcc DocNameI)
hd
ppShortField :: Bool -> Unicode -> Qualification -> ConDeclField DocNameI -> Html
ppShortField :: Bool -> Bool -> Qualification -> ConDeclField DocNameI -> Html
ppShortField Bool
summary Bool
unicode Qualification
qual (ConDeclField XConDeclField DocNameI
_ [LFieldOcc DocNameI]
names XRec DocNameI (HsType DocNameI)
ltype Maybe (LHsDoc DocNameI)
_) =
[Html] -> Html
hsep (Html -> [Html] -> [Html]
punctuate Html
comma ((GenLocated SrcSpanAnnA (FieldOcc DocNameI) -> Html)
-> [GenLocated SrcSpanAnnA (FieldOcc DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map ((Bool -> OccName -> Html
ppBinder Bool
summary) (OccName -> Html)
-> (GenLocated SrcSpanAnnA (FieldOcc DocNameI) -> OccName)
-> GenLocated SrcSpanAnnA (FieldOcc DocNameI)
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RdrName -> OccName
rdrNameOcc (RdrName -> OccName)
-> (GenLocated SrcSpanAnnA (FieldOcc DocNameI) -> RdrName)
-> GenLocated SrcSpanAnnA (FieldOcc DocNameI)
-> OccName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FieldOcc DocNameI -> XCFieldOcc DocNameI
FieldOcc DocNameI -> RdrName
forall pass. FieldOcc pass -> XCFieldOcc pass
foExt (FieldOcc DocNameI -> RdrName)
-> (GenLocated SrcSpanAnnA (FieldOcc DocNameI)
-> FieldOcc DocNameI)
-> GenLocated SrcSpanAnnA (FieldOcc DocNameI)
-> RdrName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnA (FieldOcc DocNameI) -> FieldOcc DocNameI
forall l e. GenLocated l e -> e
unLoc) [LFieldOcc DocNameI]
[GenLocated SrcSpanAnnA (FieldOcc DocNameI)]
names))
Html -> Html -> Html
<+> Bool -> Html
dcolon Bool
unicode
Html -> Html -> Html
<+> Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts XRec DocNameI (HsType DocNameI)
ltype
ppSideBySidePat
:: [(DocName, Fixity)]
-> Unicode
-> Qualification
-> [LocatedN DocName]
-> LHsSigType DocNameI
-> DocForDecl DocName
-> SubDecl
ppSideBySidePat :: [(DocName, Fixity)]
-> Bool
-> Qualification
-> [GenLocated SrcSpanAnnN DocName]
-> LHsSigType DocNameI
-> DocForDecl DocName
-> SubDecl
ppSideBySidePat [(DocName, Fixity)]
fixities Bool
unicode Qualification
qual [GenLocated SrcSpanAnnN DocName]
lnames LHsSigType DocNameI
typ (Documentation DocName
doc, FnArgsDoc DocName
argDocs) =
( Html
decl
, Documentation DocName -> Maybe (MDoc DocName)
forall name. Documentation name -> Maybe (MDoc name)
combineDocumentation Documentation DocName
doc
, [Html]
fieldPart
)
where
hasArgDocs :: Bool
hasArgDocs = Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ FnArgsDoc DocName -> Bool
forall k a. Map k a -> Bool
Map.null FnArgsDoc DocName
argDocs
fixity :: Html
fixity = [(DocName, Fixity)] -> Qualification -> Html
ppFixities [(DocName, Fixity)]
fixities Qualification
qual
ppOcc :: Html
ppOcc = [Html] -> Html
hsep (Html -> [Html] -> [Html]
punctuate Html
comma ((GenLocated SrcSpanAnnN DocName -> Html)
-> [GenLocated SrcSpanAnnN DocName] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool -> OccName -> Html
ppBinder Bool
False (OccName -> Html)
-> (GenLocated SrcSpanAnnN DocName -> OccName)
-> GenLocated SrcSpanAnnN DocName
-> Html
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnN DocName -> OccName
forall a. NamedThing a => a -> OccName
getOccName) [GenLocated SrcSpanAnnN DocName]
lnames))
decl :: Html
decl
| Bool
hasArgDocs = String -> Html
keyword String
"pattern" Html -> Html -> Html
<+> Html
ppOcc Html -> Html -> Html
<+> Html
fixity
| Bool
otherwise =
[Html] -> Html
hsep
[ String -> Html
keyword String
"pattern"
, Html
ppOcc
, Bool -> Html
dcolon Bool
unicode
, Bool -> Qualification -> LHsSigType DocNameI -> Html
ppPatSigType Bool
unicode Qualification
qual LHsSigType DocNameI
typ
, Html
fixity
]
fieldPart :: [Html]
fieldPart
| Bool -> Bool
not Bool
hasArgDocs = []
| Bool
otherwise =
[ Maybe String -> Qualification -> [SubDecl] -> Html
subFields
Maybe String
forall a. Maybe a
Nothing
Qualification
qual
( Bool
-> Qualification
-> HsSigType DocNameI
-> FnArgsDoc DocName
-> [(DocName, DocForDecl DocName)]
-> Html
-> HideEmptyContexts
-> [SubDecl]
ppSubSigLike
Bool
unicode
Qualification
qual
(GenLocated SrcSpanAnnA (HsSigType DocNameI) -> HsSigType DocNameI
forall l e. GenLocated l e -> e
unLoc LHsSigType DocNameI
GenLocated SrcSpanAnnA (HsSigType DocNameI)
typ)
FnArgsDoc DocName
argDocs
[]
(Bool -> Html
dcolon Bool
unicode)
HideEmptyContexts
emptyCtxt
)
]
emptyCtxt :: HideEmptyContexts
emptyCtxt = LHsSigType DocNameI -> HideEmptyContexts
patSigContext LHsSigType DocNameI
typ
ppDataHeader :: Bool -> TyClDecl DocNameI -> Unicode -> Qualification -> Html
Bool
summary
( DataDecl
{ tcdDataDefn :: forall pass. TyClDecl pass -> HsDataDefn pass
tcdDataDefn =
HsDataDefn
{ dd_cons :: forall pass. HsDataDefn pass -> DataDefnCons (LConDecl pass)
dd_cons = DataDefnCons (LConDecl DocNameI)
cons
, dd_ctxt :: forall pass. HsDataDefn pass -> Maybe (LHsContext pass)
dd_ctxt = Maybe (LHsContext DocNameI)
ctxt
, dd_kindSig :: forall pass. HsDataDefn pass -> Maybe (LHsKind pass)
dd_kindSig = Maybe (XRec DocNameI (HsType DocNameI))
ks
}
, tcdLName :: forall pass. TyClDecl pass -> LIdP pass
tcdLName = L SrcSpanAnnN
_ DocName
name
, tcdTyVars :: forall pass. TyClDecl pass -> LHsQTyVars pass
tcdTyVars = LHsQTyVars DocNameI
tvs
}
)
Bool
unicode
Qualification
qual =
( case DataDefnCons (LConDecl DocNameI)
cons of
NewTypeCon LConDecl DocNameI
_ -> String -> Html
keyword String
"newtype"
DataTypeCons Bool
False [LConDecl DocNameI]
_ -> String -> Html
keyword String
"data"
DataTypeCons Bool
True [LConDecl DocNameI]
_ -> String -> Html
keyword String
"type" Html -> Html -> Html
<+> String -> Html
keyword String
"data"
)
Html -> Html -> Html
<+>
Maybe (LHsContext DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppLContext Maybe (LHsContext DocNameI)
ctxt Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
Html -> Html -> Html
<+>
Bool
-> Bool
-> Qualification
-> DocName
-> [LHsTyVarBndr (HsBndrVis DocNameI) DocNameI]
-> Html
forall flag.
RenderableBndrFlag flag =>
Bool
-> Bool
-> Qualification
-> DocName
-> [LHsTyVarBndr flag DocNameI]
-> Html
ppAppDocNameTyVarBndrs Bool
summary Bool
unicode Qualification
qual DocName
name (LHsQTyVars DocNameI -> [LHsTyVarBndr (HsBndrVis DocNameI) DocNameI]
forall pass.
LHsQTyVars pass -> [LHsTyVarBndr (HsBndrVis pass) pass]
hsQTvExplicit LHsQTyVars DocNameI
tvs)
Html -> Html -> Html
<+> case Maybe (XRec DocNameI (HsType DocNameI))
ks of
Maybe (XRec DocNameI (HsType DocNameI))
Nothing -> Html
forall a. Monoid a => a
mempty
Just (L SrcSpanAnnA
_ HsType DocNameI
x) -> Bool -> Html
dcolon Bool
unicode Html -> Html -> Html
<+> Bool -> Qualification -> HsType DocNameI -> Html
ppKind Bool
unicode Qualification
qual HsType DocNameI
x
ppDataHeader Bool
_ TyClDecl DocNameI
_ Bool
_ Qualification
_ = String -> Html
forall a. HasCallStack => String -> a
error String
"ppDataHeader: illegal argument"
ppBang :: HsBang -> Html
ppBang :: HsBang -> Html
ppBang (HsBang SrcUnpackedness
_ SrcStrictness
SrcStrict) = String -> Html
forall a. HTML a => a -> Html
toHtml String
"!"
ppBang (HsBang SrcUnpackedness
_ SrcStrictness
SrcLazy) = String -> Html
forall a. HTML a => a -> Html
toHtml String
"~"
ppBang HsBang
_ = Html
noHtml
tupleParens :: HsTupleSort -> [Html] -> Html
tupleParens :: HsTupleSort -> [Html] -> Html
tupleParens HsTupleSort
HsUnboxedTuple = [Html] -> Html
ubxParenList
tupleParens HsTupleSort
_ = [Html] -> Html
parenList
sumParens :: [Html] -> Html
sumParens :: [Html] -> Html
sumParens = [Html] -> Html
ubxSumList
ppLType, ppLParendType, ppLFunLhType :: Unicode -> Qualification -> HideEmptyContexts -> LHsType DocNameI -> Html
ppLType :: Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts XRec DocNameI (HsType DocNameI)
y = Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts (GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
y)
ppLParendType :: Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts XRec DocNameI (HsType DocNameI)
y = Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppParendType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts (GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
y)
ppLFunLhType :: Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLFunLhType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts XRec DocNameI (HsType DocNameI)
y = Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppFunLhType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts (GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
y)
ppLSigType :: Unicode -> Qualification -> HideEmptyContexts -> LHsSigType DocNameI -> Html
ppLSigType :: Bool
-> Qualification
-> HideEmptyContexts
-> LHsSigType DocNameI
-> Html
ppLSigType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts LHsSigType DocNameI
y = Bool
-> Qualification -> HideEmptyContexts -> HsSigType DocNameI -> Html
ppSigType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts (GenLocated SrcSpanAnnA (HsSigType DocNameI) -> HsSigType DocNameI
forall l e. GenLocated l e -> e
unLoc LHsSigType DocNameI
GenLocated SrcSpanAnnA (HsSigType DocNameI)
y)
ppCtxType :: Unicode -> Qualification -> HsType DocNameI -> Html
ppCtxType :: Bool -> Qualification -> HsType DocNameI -> Html
ppCtxType Bool
unicode Qualification
qual HsType DocNameI
ty = HsType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_ty (Precedence -> HsType DocNameI -> HsType DocNameI
forall a. XRecCond a => Precedence -> HsType a -> HsType a
reparenTypePrec Precedence
PREC_CTX HsType DocNameI
ty) Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
ppType, ppParendType, ppFunLhType :: Unicode -> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppType :: Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts HsType DocNameI
ty = HsType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_ty (Precedence -> HsType DocNameI -> HsType DocNameI
forall a. XRecCond a => Precedence -> HsType a -> HsType a
reparenTypePrec Precedence
PREC_TOP HsType DocNameI
ty) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppParendType :: Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppParendType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts HsType DocNameI
ty = HsType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_ty (Precedence -> HsType DocNameI -> HsType DocNameI
forall a. XRecCond a => Precedence -> HsType a -> HsType a
reparenTypePrec Precedence
PREC_CON HsType DocNameI
ty) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppFunLhType :: Bool
-> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html
ppFunLhType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts HsType DocNameI
ty = HsType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_ty (Precedence -> HsType DocNameI -> HsType DocNameI
forall a. XRecCond a => Precedence -> HsType a -> HsType a
reparenTypePrec Precedence
PREC_FUN HsType DocNameI
ty) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppSigType :: Unicode -> Qualification -> HideEmptyContexts -> HsSigType DocNameI -> Html
ppSigType :: Bool
-> Qualification -> HideEmptyContexts -> HsSigType DocNameI -> Html
ppSigType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts HsSigType DocNameI
sig_ty = HsSigType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_sig_ty (HsSigType DocNameI -> HsSigType DocNameI
forall a. XRecCond a => HsSigType a -> HsSigType a
reparenSigType HsSigType DocNameI
sig_ty) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppLHsTypeArg :: Unicode -> Qualification -> HideEmptyContexts -> LHsTypeArg DocNameI -> Html
ppLHsTypeArg :: Bool
-> Qualification
-> HideEmptyContexts
-> HsArg
DocNameI
(XRec DocNameI (HsType DocNameI))
(XRec DocNameI (HsType DocNameI))
-> Html
ppLHsTypeArg Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts (HsValArg XValArg DocNameI
_ XRec DocNameI (HsType DocNameI)
ty) = Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts XRec DocNameI (HsType DocNameI)
ty
ppLHsTypeArg Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts (HsTypeArg XTypeArg DocNameI
_ XRec DocNameI (HsType DocNameI)
ki) = Html
atSign Html -> Html -> Html
forall a. Semigroup a => a -> a -> a
<> Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts XRec DocNameI (HsType DocNameI)
ki
ppLHsTypeArg Bool
_ Qualification
_ HideEmptyContexts
_ (HsArgPar XArgPar DocNameI
_) = String -> Html
forall a. HTML a => a -> Html
toHtml String
""
class RenderableBndrFlag flag where
ppHsTyVarBndr :: Unicode -> Qualification -> HsTyVarBndr flag DocNameI -> Html
instance RenderableBndrFlag () where
ppHsTyVarBndr :: Bool -> Qualification -> HsTyVarBndr () DocNameI -> Html
ppHsTyVarBndr Bool
unicode Qualification
qual (HsTvb XTyVarBndr DocNameI
_ ()
_ HsBndrVar DocNameI
bvar HsBndrKind DocNameI
bkind) =
Html -> Html
decorate (Bool
-> Qualification
-> HsBndrVar DocNameI
-> HsBndrKind DocNameI
-> Html
pp_hs_tvb Bool
unicode Qualification
qual HsBndrVar DocNameI
bvar HsBndrKind DocNameI
bkind)
where decorate :: Html -> Html
decorate :: Html -> Html
decorate Html
d = HsBndrKind DocNameI -> Html -> Html
parens_if_kind HsBndrKind DocNameI
bkind Html
d
instance RenderableBndrFlag Specificity where
ppHsTyVarBndr :: Bool -> Qualification -> HsTyVarBndr Specificity DocNameI -> Html
ppHsTyVarBndr Bool
unicode Qualification
qual (HsTvb XTyVarBndr DocNameI
_ Specificity
spec HsBndrVar DocNameI
bvar HsBndrKind DocNameI
bkind) =
Html -> Html
decorate (Bool
-> Qualification
-> HsBndrVar DocNameI
-> HsBndrKind DocNameI
-> Html
pp_hs_tvb Bool
unicode Qualification
qual HsBndrVar DocNameI
bvar HsBndrKind DocNameI
bkind)
where decorate :: Html -> Html
decorate :: Html -> Html
decorate Html
d = case Specificity
spec of
Specificity
InferredSpec -> Html -> Html
braces Html
d
Specificity
SpecifiedSpec -> HsBndrKind DocNameI -> Html -> Html
parens_if_kind HsBndrKind DocNameI
bkind Html
d
instance RenderableBndrFlag (HsBndrVis DocNameI) where
ppHsTyVarBndr :: Bool
-> Qualification
-> HsTyVarBndr (HsBndrVis DocNameI) DocNameI
-> Html
ppHsTyVarBndr Bool
unicode Qualification
qual (HsTvb XTyVarBndr DocNameI
_ HsBndrVis DocNameI
bvis HsBndrVar DocNameI
bvar HsBndrKind DocNameI
bkind) =
Html -> Html
decorate (Bool
-> Qualification
-> HsBndrVar DocNameI
-> HsBndrKind DocNameI
-> Html
pp_hs_tvb Bool
unicode Qualification
qual HsBndrVar DocNameI
bvar HsBndrKind DocNameI
bkind)
where decorate :: Html -> Html
decorate :: Html -> Html
decorate Html
d = case HsBndrVis DocNameI
bvis of
HsBndrRequired XBndrRequired DocNameI
_ -> HsBndrKind DocNameI -> Html -> Html
parens_if_kind HsBndrKind DocNameI
bkind Html
d
HsBndrInvisible XBndrInvisible DocNameI
_ -> Html
atSign Html -> Html -> Html
forall a. Semigroup a => a -> a -> a
<> HsBndrKind DocNameI -> Html -> Html
parens_if_kind HsBndrKind DocNameI
bkind Html
d
ppHsBndrVar :: Qualification -> HsBndrVar DocNameI -> Html
ppHsBndrVar :: Qualification -> HsBndrVar DocNameI -> Html
ppHsBndrVar Qualification
qual (HsBndrVar XBndrVar DocNameI
_ LIdP DocNameI
name) = Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
qual Notation
Raw Bool
False (GenLocated SrcSpanAnnN DocName -> DocName
forall l e. GenLocated l e -> e
unLoc LIdP DocNameI
GenLocated SrcSpanAnnN DocName
name)
ppHsBndrVar Qualification
_ (HsBndrWildCard XBndrWildCard DocNameI
_) = Char -> Html
char Char
'_'
pp_hs_tvb :: Unicode -> Qualification -> HsBndrVar DocNameI -> HsBndrKind DocNameI -> Html
pp_hs_tvb :: Bool
-> Qualification
-> HsBndrVar DocNameI
-> HsBndrKind DocNameI
-> Html
pp_hs_tvb Bool
_ Qualification
qual HsBndrVar DocNameI
bvar (HsBndrNoKind XBndrNoKind DocNameI
_) = Qualification -> HsBndrVar DocNameI -> Html
ppHsBndrVar Qualification
qual HsBndrVar DocNameI
bvar
pp_hs_tvb Bool
unicode Qualification
qual HsBndrVar DocNameI
bvar (HsBndrKind XBndrKind DocNameI
_ XRec DocNameI (HsType DocNameI)
k) =
Qualification -> HsBndrVar DocNameI -> Html
ppHsBndrVar Qualification
qual HsBndrVar DocNameI
bvar Html -> Html -> Html
<+> Bool -> Html
dcolon Bool
unicode
Html -> Html -> Html
<+> Bool -> Qualification -> XRec DocNameI (HsType DocNameI) -> Html
ppLKind Bool
unicode Qualification
qual XRec DocNameI (HsType DocNameI)
k
parens_if_kind :: HsBndrKind DocNameI -> Html -> Html
parens_if_kind :: HsBndrKind DocNameI -> Html -> Html
parens_if_kind (HsBndrNoKind XBndrNoKind DocNameI
_) Html
d = Html
d
parens_if_kind (HsBndrKind XBndrKind DocNameI
_ XRec DocNameI (HsType DocNameI)
_) Html
d = Html -> Html
parens Html
d
ppLKind :: Unicode -> Qualification -> LHsKind DocNameI -> Html
ppLKind :: Bool -> Qualification -> XRec DocNameI (HsType DocNameI) -> Html
ppLKind Bool
unicode Qualification
qual XRec DocNameI (HsType DocNameI)
y = Bool -> Qualification -> HsType DocNameI -> Html
ppKind Bool
unicode Qualification
qual (GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
y)
ppKind :: Unicode -> Qualification -> HsKind DocNameI -> Html
ppKind :: Bool -> Qualification -> HsType DocNameI -> Html
ppKind Bool
unicode Qualification
qual HsType DocNameI
ki = HsType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_ty (Precedence -> HsType DocNameI -> HsType DocNameI
forall a. XRecCond a => Precedence -> HsType a -> HsType a
reparenTypePrec Precedence
PREC_TOP HsType DocNameI
ki) Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
patSigContext :: LHsSigType DocNameI -> HideEmptyContexts
patSigContext :: LHsSigType DocNameI -> HideEmptyContexts
patSigContext LHsSigType DocNameI
sig_typ
| GenLocated SrcSpanAnnA (HsType DocNameI) -> Bool
forall {pass} {l} {l}.
(XRec pass (HsType pass) ~ GenLocated l (HsType pass),
XRec pass [GenLocated l (HsType pass)]
~ GenLocated l [GenLocated l (HsType pass)]) =>
GenLocated l (HsType pass) -> Bool
hasNonEmptyContext XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
typ Bool -> Bool -> Bool
&& GenLocated SrcSpanAnnA (HsType DocNameI) -> Bool
forall {pass} {l} {l}.
(XRec pass (HsType pass) ~ GenLocated l (HsType pass),
XRec pass [GenLocated l (HsType pass)]
~ GenLocated l [GenLocated l (HsType pass)]) =>
GenLocated l (HsType pass) -> Bool
isFirstContextEmpty XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
typ = HideEmptyContexts
ShowEmptyToplevelContexts
| Bool
otherwise = HideEmptyContexts
HideEmptyContexts
where
typ :: XRec DocNameI (HsType DocNameI)
typ = HsSigType DocNameI -> XRec DocNameI (HsType DocNameI)
forall pass. HsSigType pass -> LHsType pass
sig_body (GenLocated SrcSpanAnnA (HsSigType DocNameI) -> HsSigType DocNameI
forall l e. GenLocated l e -> e
unLoc LHsSigType DocNameI
GenLocated SrcSpanAnnA (HsSigType DocNameI)
sig_typ)
hasNonEmptyContext :: GenLocated l (HsType pass) -> Bool
hasNonEmptyContext GenLocated l (HsType pass)
t =
case GenLocated l (HsType pass) -> HsType pass
forall l e. GenLocated l e -> e
unLoc GenLocated l (HsType pass)
t of
HsForAllTy XForAllTy pass
_ HsForAllTelescope pass
_ XRec pass (HsType pass)
s -> GenLocated l (HsType pass) -> Bool
hasNonEmptyContext XRec pass (HsType pass)
GenLocated l (HsType pass)
s
HsQualTy XQualTy pass
_ LHsContext pass
cxt XRec pass (HsType pass)
s -> if [GenLocated l (HsType pass)] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null (GenLocated l [GenLocated l (HsType pass)]
-> [GenLocated l (HsType pass)]
forall l e. GenLocated l e -> e
unLoc LHsContext pass
GenLocated l [GenLocated l (HsType pass)]
cxt) then GenLocated l (HsType pass) -> Bool
hasNonEmptyContext XRec pass (HsType pass)
GenLocated l (HsType pass)
s else Bool
True
HsFunTy XFunTy pass
_ HsArrow pass
_ XRec pass (HsType pass)
_ XRec pass (HsType pass)
s -> GenLocated l (HsType pass) -> Bool
hasNonEmptyContext XRec pass (HsType pass)
GenLocated l (HsType pass)
s
HsType pass
_ -> Bool
False
isFirstContextEmpty :: GenLocated l (HsType pass) -> Bool
isFirstContextEmpty GenLocated l (HsType pass)
t =
case GenLocated l (HsType pass) -> HsType pass
forall l e. GenLocated l e -> e
unLoc GenLocated l (HsType pass)
t of
HsForAllTy XForAllTy pass
_ HsForAllTelescope pass
_ XRec pass (HsType pass)
s -> GenLocated l (HsType pass) -> Bool
isFirstContextEmpty XRec pass (HsType pass)
GenLocated l (HsType pass)
s
HsQualTy XQualTy pass
_ LHsContext pass
cxt XRec pass (HsType pass)
_ -> [GenLocated l (HsType pass)] -> Bool
forall a. [a] -> Bool
forall (t :: Type -> Type) a. Foldable t => t a -> Bool
null (GenLocated l [GenLocated l (HsType pass)]
-> [GenLocated l (HsType pass)]
forall l e. GenLocated l e -> e
unLoc LHsContext pass
GenLocated l [GenLocated l (HsType pass)]
cxt)
HsFunTy XFunTy pass
_ HsArrow pass
_ XRec pass (HsType pass)
_ XRec pass (HsType pass)
s -> GenLocated l (HsType pass) -> Bool
isFirstContextEmpty XRec pass (HsType pass)
GenLocated l (HsType pass)
s
HsType pass
_ -> Bool
False
ppPatSigType :: Unicode -> Qualification -> LHsSigType DocNameI -> Html
ppPatSigType :: Bool -> Qualification -> LHsSigType DocNameI -> Html
ppPatSigType Bool
unicode Qualification
qual LHsSigType DocNameI
typ =
let emptyCtxts :: HideEmptyContexts
emptyCtxts = LHsSigType DocNameI -> HideEmptyContexts
patSigContext LHsSigType DocNameI
typ in Bool
-> Qualification
-> HideEmptyContexts
-> LHsSigType DocNameI
-> Html
ppLSigType Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts LHsSigType DocNameI
typ
ppHsOuterTyVarBndrs
:: RenderableBndrFlag flag
=> Unicode
-> Qualification
-> HsOuterTyVarBndrs flag DocNameI
-> Html
ppHsOuterTyVarBndrs :: forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> HsOuterTyVarBndrs flag DocNameI -> Html
ppHsOuterTyVarBndrs Bool
unicode Qualification
qual HsOuterTyVarBndrs flag DocNameI
outer_bndrs = case HsOuterTyVarBndrs flag DocNameI
outer_bndrs of
HsOuterImplicit{} -> Html
noHtml
HsOuterExplicit{hso_bndrs :: forall flag pass.
HsOuterTyVarBndrs flag pass -> [LHsTyVarBndr flag (NoGhcTc pass)]
hso_bndrs = [LHsTyVarBndr flag (NoGhcTc DocNameI)]
bndrs} ->
[Html] -> Html
hsep (Bool -> Html
forallSymbol Bool
unicode Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
: Bool -> Qualification -> [LHsTyVarBndr flag DocNameI] -> [Html]
forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> [LHsTyVarBndr flag DocNameI] -> [Html]
ppTyVars Bool
unicode Qualification
qual [LHsTyVarBndr flag (NoGhcTc DocNameI)]
[LHsTyVarBndr flag DocNameI]
bndrs) Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
dot
ppForAllPart :: Unicode -> Qualification -> HsForAllTelescope DocNameI -> Html
ppForAllPart :: Bool -> Qualification -> HsForAllTelescope DocNameI -> Html
ppForAllPart Bool
unicode Qualification
qual HsForAllTelescope DocNameI
tele = case HsForAllTelescope DocNameI
tele of
HsForAllVis{hsf_vis_bndrs :: forall pass. HsForAllTelescope pass -> [LHsTyVarBndr () pass]
hsf_vis_bndrs = [LHsTyVarBndr () DocNameI]
bndrs} ->
[Html] -> Html
hsep (Bool -> Html
forallSymbol Bool
unicode Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
: Bool -> Qualification -> [LHsTyVarBndr () DocNameI] -> [Html]
forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> [LHsTyVarBndr flag DocNameI] -> [Html]
ppTyVars Bool
unicode Qualification
qual [LHsTyVarBndr () DocNameI]
bndrs)
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
spaceHtml
Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Bool -> Html
arrow Bool
unicode
HsForAllInvis{hsf_invis_bndrs :: forall pass.
HsForAllTelescope pass -> [LHsTyVarBndr Specificity pass]
hsf_invis_bndrs = [LHsTyVarBndr Specificity DocNameI]
bndrs} ->
[Html] -> Html
hsep (Bool -> Html
forallSymbol Bool
unicode Html -> [Html] -> [Html]
forall a. a -> [a] -> [a]
: Bool
-> Qualification -> [LHsTyVarBndr Specificity DocNameI] -> [Html]
forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> [LHsTyVarBndr flag DocNameI] -> [Html]
ppTyVars Bool
unicode Qualification
qual [LHsTyVarBndr Specificity DocNameI]
bndrs) Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Html
dot
ppr_sig_ty :: HsSigType DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html
ppr_sig_ty :: HsSigType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_sig_ty (HsSig{sig_bndrs :: forall pass. HsSigType pass -> HsOuterSigTyVarBndrs pass
sig_bndrs = HsOuterSigTyVarBndrs DocNameI
outer_bndrs, sig_body :: forall pass. HsSigType pass -> LHsType pass
sig_body = XRec DocNameI (HsType DocNameI)
ltype}) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts =
Bool -> Qualification -> HsOuterSigTyVarBndrs DocNameI -> Html
forall flag.
RenderableBndrFlag flag =>
Bool -> Qualification -> HsOuterTyVarBndrs flag DocNameI -> Html
ppHsOuterTyVarBndrs Bool
unicode Qualification
qual HsOuterSigTyVarBndrs DocNameI
outer_bndrs Html -> Html -> Html
<+> XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ltype Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppr_mono_lty :: LHsType DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty :: XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty = HsType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_ty (GenLocated SrcSpanAnnA (HsType DocNameI) -> HsType DocNameI
forall l e. GenLocated l e -> e
unLoc XRec DocNameI (HsType DocNameI)
GenLocated SrcSpanAnnA (HsType DocNameI)
ty)
ppr_mono_ty :: HsType DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html
ppr_mono_ty :: HsType DocNameI
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_ty (HsForAllTy XForAllTy DocNameI
_ HsForAllTelescope DocNameI
tele XRec DocNameI (HsType DocNameI)
ty) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts =
Bool -> Qualification -> HsForAllTelescope DocNameI -> Html
ppForAllPart Bool
unicode Qualification
qual HsForAllTelescope DocNameI
tele Html -> Html -> Html
<+> XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppr_mono_ty (HsQualTy XQualTy DocNameI
_ LHsContext DocNameI
ctxt XRec DocNameI (HsType DocNameI)
ty) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts =
Maybe (LHsContext DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppLContext (GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)]
-> Maybe
(GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)])
forall a. a -> Maybe a
Just LHsContext DocNameI
GenLocated SrcSpanAnnC [GenLocated SrcSpanAnnA (HsType DocNameI)]
ctxt) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts Html -> Html -> Html
<+> XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppr_mono_ty (HsTyVar XTyVar DocNameI
_ PromotionFlag
_ (L SrcSpanAnnN
_ DocName
name)) Bool
True Qualification
_ HideEmptyContexts
_
| Name -> String
forall a. NamedThing a => a -> String
getOccString (DocName -> Name
forall a. NamedThing a => a -> Name
getName DocName
name) String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"(->)" = String -> Html
forall a. HTML a => a -> Html
toHtml String
"(→)"
ppr_mono_ty (HsBangTy XBangTy DocNameI
_ HsBang
b XRec DocNameI (HsType DocNameI)
ty) Bool
u Qualification
q HideEmptyContexts
_ =
HsBang -> Html
ppBang HsBang
b Html -> Html -> Html
forall a b. (HTML a, HTML b) => a -> b -> Html
+++ Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLParendType Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts XRec DocNameI (HsType DocNameI)
ty
ppr_mono_ty (HsTyVar XTyVar DocNameI
_ PromotionFlag
prom (L SrcSpanAnnN
_ DocName
name)) Bool
_ Qualification
q HideEmptyContexts
_
| PromotionFlag -> Bool
isPromoted PromotionFlag
prom = Html -> Html
promoQuote (Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
q Notation
Prefix Bool
True DocName
name)
| Bool
otherwise = Qualification -> Notation -> Bool -> DocName -> Html
ppDocName Qualification
q Notation
Prefix Bool
True DocName
name
ppr_mono_ty (HsStarTy XStarTy DocNameI
_ Bool
isUni) Bool
u Qualification
_ HideEmptyContexts
_ =
String -> Html
forall a. HTML a => a -> Html
toHtml (if Bool
u Bool -> Bool -> Bool
|| Bool
isUni then String
"★" else String
"*")
ppr_mono_ty (HsFunTy XFunTy DocNameI
_ HsArrow DocNameI
mult XRec DocNameI (HsType DocNameI)
ty1 XRec DocNameI (HsType DocNameI)
ty2) Bool
u Qualification
q HideEmptyContexts
e =
[Html] -> Html
hsep
[ XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty1 Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts
, Html
arr Html -> Html -> Html
<+> XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty2 Bool
u Qualification
q HideEmptyContexts
e
]
where
arr :: Html
arr = case HsArrow DocNameI
mult of
HsLinearArrow XLinearArrow (XRec DocNameI (HsType DocNameI)) DocNameI
_ -> Bool -> Html
lollipop Bool
u
HsUnrestrictedArrow XUnrestrictedArrow (XRec DocNameI (HsType DocNameI)) DocNameI
_ -> Bool -> Html
arrow Bool
u
HsExplicitMult XExplicitMult (XRec DocNameI (HsType DocNameI)) DocNameI
_ XRec DocNameI (HsType DocNameI)
m -> Html
multAnnotation Html -> Html -> Html
forall a. Semigroup a => a -> a -> a
<> XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
m Bool
u Qualification
q HideEmptyContexts
e Html -> Html -> Html
<+> Bool -> Html
arrow Bool
u
ppr_mono_ty (HsTupleTy XTupleTy DocNameI
_ HsTupleSort
con HsContext DocNameI
tys) Bool
u Qualification
q HideEmptyContexts
_ =
HsTupleSort -> [Html] -> Html
tupleParens HsTupleSort
con ((GenLocated SrcSpanAnnA (HsType DocNameI) -> Html)
-> [GenLocated SrcSpanAnnA (HsType DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts) HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
tys)
ppr_mono_ty (HsSumTy XSumTy DocNameI
_ HsContext DocNameI
tys) Bool
u Qualification
q HideEmptyContexts
_ =
[Html] -> Html
sumParens ((GenLocated SrcSpanAnnA (HsType DocNameI) -> Html)
-> [GenLocated SrcSpanAnnA (HsType DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts) HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
tys)
ppr_mono_ty (HsKindSig XKindSig DocNameI
_ XRec DocNameI (HsType DocNameI)
ty XRec DocNameI (HsType DocNameI)
kind) Bool
u Qualification
q HideEmptyContexts
e =
XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty Bool
u Qualification
q HideEmptyContexts
e Html -> Html -> Html
<+> Bool -> Html
dcolon Bool
u Html -> Html -> Html
<+> Bool -> Qualification -> XRec DocNameI (HsType DocNameI) -> Html
ppLKind Bool
u Qualification
q XRec DocNameI (HsType DocNameI)
kind
ppr_mono_ty (HsListTy XListTy DocNameI
_ XRec DocNameI (HsType DocNameI)
ty) Bool
u Qualification
q HideEmptyContexts
_ = Html -> Html
brackets (XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts)
ppr_mono_ty (HsIParamTy XIParamTy DocNameI
_ (L EpAnn NoEpAnns
_ HsIPName
n) XRec DocNameI (HsType DocNameI)
ty) Bool
u Qualification
q HideEmptyContexts
_ =
HsIPName -> Html
ppIPName HsIPName
n Html -> Html -> Html
<+> Bool -> Html
dcolon Bool
u Html -> Html -> Html
<+> XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts
ppr_mono_ty (HsSpliceTy XSpliceTy DocNameI
v HsUntypedSplice DocNameI
_) Bool
_ Qualification
_ HideEmptyContexts
_ = DataConCantHappen -> Html
forall a. DataConCantHappen -> a
dataConCantHappen XSpliceTy DocNameI
DataConCantHappen
v
ppr_mono_ty (HsRecTy{}) Bool
_ Qualification
_ HideEmptyContexts
_ = String -> Html
forall a. HTML a => a -> Html
toHtml String
"{..}"
ppr_mono_ty (XHsType{}) Bool
_ Qualification
_ HideEmptyContexts
_ = String -> Html
forall a. HasCallStack => String -> a
error String
"ppr_mono_ty HsCoreTy"
ppr_mono_ty (HsExplicitListTy XExplicitListTy DocNameI
_ PromotionFlag
IsPromoted HsContext DocNameI
tys) Bool
u Qualification
q HideEmptyContexts
_ = Html -> Html
promoQuote (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ Html -> Html
brackets (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ [Html] -> Html
hsep ([Html] -> Html) -> [Html] -> Html
forall a b. (a -> b) -> a -> b
$ Html -> [Html] -> [Html]
punctuate Html
comma ([Html] -> [Html]) -> [Html] -> [Html]
forall a b. (a -> b) -> a -> b
$ (GenLocated SrcSpanAnnA (HsType DocNameI) -> Html)
-> [GenLocated SrcSpanAnnA (HsType DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts) HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
tys
ppr_mono_ty (HsExplicitListTy XExplicitListTy DocNameI
_ PromotionFlag
NotPromoted HsContext DocNameI
tys) Bool
u Qualification
q HideEmptyContexts
_ = Html -> Html
brackets (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ [Html] -> Html
hsep ([Html] -> Html) -> [Html] -> Html
forall a b. (a -> b) -> a -> b
$ Html -> [Html] -> [Html]
punctuate Html
comma ([Html] -> [Html]) -> [Html] -> [Html]
forall a b. (a -> b) -> a -> b
$ (GenLocated SrcSpanAnnA (HsType DocNameI) -> Html)
-> [GenLocated SrcSpanAnnA (HsType DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts) HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
tys
ppr_mono_ty (HsExplicitTupleTy XExplicitTupleTy DocNameI
_ PromotionFlag
IsPromoted HsContext DocNameI
tys) Bool
u Qualification
q HideEmptyContexts
_ = Html -> Html
promoQuote (Html -> Html) -> Html -> Html
forall a b. (a -> b) -> a -> b
$ [Html] -> Html
parenList ([Html] -> Html) -> [Html] -> Html
forall a b. (a -> b) -> a -> b
$ (GenLocated SrcSpanAnnA (HsType DocNameI) -> Html)
-> [GenLocated SrcSpanAnnA (HsType DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts) HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
tys
ppr_mono_ty (HsExplicitTupleTy XExplicitTupleTy DocNameI
_ PromotionFlag
NotPromoted HsContext DocNameI
tys) Bool
u Qualification
q HideEmptyContexts
_ = [Html] -> Html
parenList ([Html] -> Html) -> [Html] -> Html
forall a b. (a -> b) -> a -> b
$ (GenLocated SrcSpanAnnA (HsType DocNameI) -> Html)
-> [GenLocated SrcSpanAnnA (HsType DocNameI)] -> [Html]
forall a b. (a -> b) -> [a] -> [b]
map (Bool
-> Qualification
-> HideEmptyContexts
-> XRec DocNameI (HsType DocNameI)
-> Html
ppLType Bool
u Qualification
q HideEmptyContexts
HideEmptyContexts) HsContext DocNameI
[GenLocated SrcSpanAnnA (HsType DocNameI)]
tys
ppr_mono_ty (HsAppTy XAppTy DocNameI
_ XRec DocNameI (HsType DocNameI)
fun_ty XRec DocNameI (HsType DocNameI)
arg_ty) Bool
unicode Qualification
qual HideEmptyContexts
_ =
[Html] -> Html
hsep
[ XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
fun_ty Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
, XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
arg_ty Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
]
ppr_mono_ty (HsAppKindTy XAppKindTy DocNameI
_ XRec DocNameI (HsType DocNameI)
fun_ty XRec DocNameI (HsType DocNameI)
arg_ki) Bool
unicode Qualification
qual HideEmptyContexts
_ =
[Html] -> Html
hsep
[ XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
fun_ty Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
, Html
atSign Html -> Html -> Html
forall a. Semigroup a => a -> a -> a
<> XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
arg_ki Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
]
ppr_mono_ty (HsOpTy XOpTy DocNameI
_ PromotionFlag
prom XRec DocNameI (HsType DocNameI)
ty1 LIdP DocNameI
op XRec DocNameI (HsType DocNameI)
ty2) Bool
unicode Qualification
qual HideEmptyContexts
_ =
XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty1 Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts Html -> Html -> Html
<+> Html
ppr_op_prom Html -> Html -> Html
<+> XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty2 Bool
unicode Qualification
qual HideEmptyContexts
HideEmptyContexts
where
ppr_op_prom :: Html
ppr_op_prom
| PromotionFlag -> Bool
isPromoted PromotionFlag
prom =
Html -> Html
promoQuote Html
ppr_op
| Bool
otherwise =
Html
ppr_op
ppr_op :: Html
ppr_op = Qualification -> Notation -> GenLocated SrcSpanAnnN DocName -> Html
forall l. Qualification -> Notation -> GenLocated l DocName -> Html
ppLDocName Qualification
qual Notation
Infix LIdP DocNameI
GenLocated SrcSpanAnnN DocName
op
ppr_mono_ty (HsParTy XParTy DocNameI
_ XRec DocNameI (HsType DocNameI)
ty) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts =
Html -> Html
parens (XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts)
ppr_mono_ty (HsDocTy XDocTy DocNameI
_ XRec DocNameI (HsType DocNameI)
ty LHsDoc DocNameI
_) Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts =
XRec DocNameI (HsType DocNameI)
-> Bool -> Qualification -> HideEmptyContexts -> Html
ppr_mono_lty XRec DocNameI (HsType DocNameI)
ty Bool
unicode Qualification
qual HideEmptyContexts
emptyCtxts
ppr_mono_ty (HsWildCardTy XWildCardTy DocNameI
_) Bool
_ Qualification
_ HideEmptyContexts
_ = Char -> Html
char Char
'_'
ppr_mono_ty (HsTyLit XTyLit DocNameI
_ HsTyLit DocNameI
n) Bool
_ Qualification
_ HideEmptyContexts
_ = HsTyLit DocNameI -> Html
ppr_tylit HsTyLit DocNameI
n
ppr_tylit :: HsTyLit DocNameI -> Html
ppr_tylit :: HsTyLit DocNameI -> Html
ppr_tylit (HsNumTy XNumTy DocNameI
_ Integer
n) = String -> Html
forall a. HTML a => a -> Html
toHtml (Integer -> String
forall a. Show a => a -> String
show Integer
n)
ppr_tylit (HsStrTy XStrTy DocNameI
_ FastString
s) = String -> Html
forall a. HTML a => a -> Html
toHtml (FastString -> String
forall a. Show a => a -> String
show FastString
s)
ppr_tylit (HsCharTy XCharTy DocNameI
_ Char
c) = String -> Html
forall a. HTML a => a -> Html
toHtml (Char -> String
forall a. Show a => a -> String
show Char
c)