summaryrefslogtreecommitdiff
path: root/compiler/parser/HaddockUtils.hs
blob: 0beaf6c7efd1598c289b6ebf8990248e69e4c010 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

module HaddockUtils where

import HsSyn
import SrcLoc

import Control.Monad

-- -----------------------------------------------------------------------------
-- Adding documentation to record fields (used in parsing).

addFieldDoc :: ConDeclField a -> Maybe LHsDocString -> ConDeclField a
addFieldDoc fld doc = fld { cd_fld_doc = cd_fld_doc fld `mplus` doc }

addFieldDocs :: [ConDeclField a] -> Maybe LHsDocString -> [ConDeclField a]
addFieldDocs [] _ = []
addFieldDocs (x:xs) doc = addFieldDoc x doc : xs

addConDoc :: LConDecl a -> Maybe LHsDocString -> LConDecl a
addConDoc decl    Nothing = decl
addConDoc (L p c) doc     = L p ( c { con_doc = con_doc c `mplus` doc } )

addConDocs :: [LConDecl a] -> Maybe LHsDocString -> [LConDecl a]
addConDocs [] _ = []
addConDocs [x] doc = [addConDoc x doc]
addConDocs (x:xs) doc = x : addConDocs xs doc

addConDocFirst :: [LConDecl a] -> Maybe LHsDocString -> [LConDecl a]
addConDocFirst [] _ = []
addConDocFirst (x:xs) doc = addConDoc x doc : xs

addTyConDoc :: LTyConDecl a -> Maybe LHsDocString -> LTyConDecl a
addTyConDoc decl    Nothing = decl
addTyConDoc (L p c) doc     = L p ( c { tycon_doc = tycon_doc c `mplus` doc } )

addTyConDocs :: [LTyConDecl a] -> Maybe LHsDocString -> [LTyConDecl a]
addTyConDocs [] _ = []
addTyConDocs [x] doc = [addTyConDoc x doc]
addTyConDocs (x:xs) doc = x : addTyConDocs xs doc

addTyConDocFirst :: [LTyConDecl a] -> Maybe LHsDocString -> [LTyConDecl a]
addTyConDocFirst [] _ = []
addTyConDocFirst (x:xs) doc = addTyConDoc x doc : xs