Skip to content
  • Luke Lau's avatar
    template-haskell: Add putDoc, getDoc, withDecDoc and friends · 8a59f49a
    Luke Lau authored and Ben Gamari's avatar Ben Gamari committed
    This adds two new methods to the Quasi class, putDoc and getDoc. They
    allow Haddock documentation to be added to declarations, module headers,
    function arguments and class/type family instances, as well as looked
    up.
    
    It works by building up a map of names to attach pieces of
    documentation to, which are then added in the extractDocs function in
    GHC.HsToCore.Docs. However because these template haskell names need to
    be resolved to GHC names at the time they are added, putDoc cannot
    directly add documentation to declarations that are currently being
    spliced. To remedy this, withDecDoc/withDecsDoc wraps the operation with
    addModFinalizer, and provides a more ergonomic interface for doing so.
    Similarly, the funD_doc, dataD_doc etc. combinators provide a more
    ergonomic interface for documenting functions and their arguments
    simultaneously.
    
    This also changes ArgDocMap to use an IntMap rather than an Map Int, for
    efficiency.
    
    Part of the work towards #5467
    8a59f49a