Safe Haskell | None |
---|---|
Language | Haskell2010 |
Extract docs from the renamer output so they can be serialized.
Synopsis
- extractDocs :: TcGblEnv -> (Maybe HsDocString, DeclDocMap, ArgDocMap)
- mkMaps :: [Name] -> [(LHsDecl GhcRn, [HsDocString])] -> (Map Name HsDocString, Map Name (Map Int HsDocString))
- getMainDeclBinder :: CollectPass (GhcPass p) => HsDecl (GhcPass p) -> [IdP (GhcPass p)]
- sigNameNoLoc :: forall pass. UnXRec pass => Sig pass -> [IdP pass]
- getInstLoc :: InstDecl (GhcPass p) -> SrcSpan
- subordinates :: Map RealSrcSpan Name -> HsDecl GhcRn -> [(Name, [HsDocString], Map Int HsDocString)]
- conArgDocs :: ConDecl GhcRn -> Map Int HsDocString
- h98ConArgDocs :: HsConDeclH98Details GhcRn -> Map Int HsDocString
- gadtConArgDocs :: HsConDeclGADTDetails GhcRn -> HsType GhcRn -> Map Int HsDocString
- con_arg_docs :: Int -> [HsType GhcRn] -> Map Int HsDocString
- isValD :: HsDecl a -> Bool
- classDecls :: TyClDecl GhcRn -> [(LHsDecl GhcRn, [HsDocString])]
- declTypeDocs :: HsDecl GhcRn -> Map Int HsDocString
- nubByName :: (a -> Name) -> [a] -> [a]
- typeDocs :: HsType GhcRn -> Map Int HsDocString
- sigTypeDocs :: HsSigType GhcRn -> Map Int HsDocString
- topDecls :: HsGroup GhcRn -> [(LHsDecl GhcRn, [HsDocString])]
- ungroup :: HsGroup GhcRn -> [LHsDecl GhcRn]
- collectDocs :: forall p. UnXRec p => [LHsDecl p] -> [(LHsDecl p, [HsDocString])]
- filterDecls :: forall p doc. UnXRec p => [(LHsDecl p, doc)] -> [(LHsDecl p, doc)]
- filterClasses :: forall p doc. (UnXRec p, MapXRec p) => [(LHsDecl p, doc)] -> [(LHsDecl p, doc)]
- isUserSig :: Sig name -> Bool
- mkDecls :: (struct -> [Located decl]) -> (decl -> hsDecl) -> struct -> [Located hsDecl]
Documentation
:: TcGblEnv | |
-> (Maybe HsDocString, DeclDocMap, ArgDocMap) |
|
Extract docs from renamer output.
mkMaps :: [Name] -> [(LHsDecl GhcRn, [HsDocString])] -> (Map Name HsDocString, Map Name (Map Int HsDocString)) Source #
Create decl and arg doc-maps by looping through the declarations. For each declaration, find its names, its subordinates, and its doc strings.
getMainDeclBinder :: CollectPass (GhcPass p) => HsDecl (GhcPass p) -> [IdP (GhcPass p)] Source #
sigNameNoLoc :: forall pass. UnXRec pass => Sig pass -> [IdP pass] Source #
getInstLoc :: InstDecl (GhcPass p) -> SrcSpan Source #
subordinates :: Map RealSrcSpan Name -> HsDecl GhcRn -> [(Name, [HsDocString], Map Int HsDocString)] Source #
Get all subordinate declarations inside a declaration, and their docs. A subordinate declaration is something like the associate type or data family of a type class.
conArgDocs :: ConDecl GhcRn -> Map Int HsDocString Source #
Extract constructor argument docs from inside constructor decls.
h98ConArgDocs :: HsConDeclH98Details GhcRn -> Map Int HsDocString Source #
gadtConArgDocs :: HsConDeclGADTDetails GhcRn -> HsType GhcRn -> Map Int HsDocString Source #
classDecls :: TyClDecl GhcRn -> [(LHsDecl GhcRn, [HsDocString])] Source #
All the sub declarations of a class (that we handle), ordered by source location, with documentation attached if it exists.
declTypeDocs :: HsDecl GhcRn -> Map Int HsDocString Source #
Extract function argument docs from inside top-level decls.
typeDocs :: HsType GhcRn -> Map Int HsDocString Source #
Extract function argument docs from inside types.
sigTypeDocs :: HsSigType GhcRn -> Map Int HsDocString Source #
Extract function argument docs from inside types.
topDecls :: HsGroup GhcRn -> [(LHsDecl GhcRn, [HsDocString])] Source #
The top-level declarations of a module that we care about, ordered by source location, with documentation attached if it exists.
ungroup :: HsGroup GhcRn -> [LHsDecl GhcRn] Source #
Take all declarations except pragmas, infix decls, rules from an HsGroup
.
collectDocs :: forall p. UnXRec p => [LHsDecl p] -> [(LHsDecl p, [HsDocString])] Source #
Collect docs and attach them to the right declarations.
A declaration may have multiple doc strings attached to it.
This is an example.
filterDecls :: forall p doc. UnXRec p => [(LHsDecl p, doc)] -> [(LHsDecl p, doc)] Source #
Filter out declarations that we don't handle in Haddock
filterClasses :: forall p doc. (UnXRec p, MapXRec p) => [(LHsDecl p, doc)] -> [(LHsDecl p, doc)] Source #
Go through all class declarations and filter their sub-declarations