ghc-9.0.1: The GHC API
Safe HaskellNone
LanguageHaskell2010

GHC.HsToCore.Docs

Description

Extract docs from the renamer output so they can be serialized.

Synopsis

Documentation

extractDocs Source #

Arguments

:: TcGblEnv 
-> (Maybe HsDocString, DeclDocMap, ArgDocMap)
  1. Module header
  2. Docs on top level declarations
  3. Docs on arguments

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.

sigNameNoLoc :: Sig pass -> [IdP pass] 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.

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.

nubByName :: (a -> Name) -> [a] -> [a] Source #

typeDocs :: HsType 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 :: [LHsDecl pass] -> [(LHsDecl pass, [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 :: [(LHsDecl a, doc)] -> [(LHsDecl a, doc)] Source #

Filter out declarations that we don't handle in Haddock

filterClasses :: [(LHsDecl a, doc)] -> [(LHsDecl a, doc)] Source #

Go through all class declarations and filter their sub-declarations

isUserSig :: Sig name -> Bool Source #

Was this signature given by the user?

mkDecls :: (struct -> [Located decl]) -> (decl -> hsDecl) -> struct -> [Located hsDecl] Source #

Take a field of declarations from a data structure and create HsDecls using the given constructor