remove Haddock-lexing/parsing/renaming from GHC
[ghc-hetmet.git] / compiler / parser / HaddockUtils.hs
1
2 module HaddockUtils where
3
4 import HsSyn
5 import SrcLoc
6 import RdrName
7
8 import FastString
9
10 import Control.Monad
11 import Data.Char
12
13 -- -----------------------------------------------------------------------------
14 -- Adding documentation to record fields (used in parsing).
15
16 addFieldDoc :: ConDeclField a -> Maybe LHsDocString -> ConDeclField a
17 addFieldDoc fld doc = fld { cd_fld_doc = cd_fld_doc fld `mplus` doc }
18
19 addFieldDocs :: [ConDeclField a] -> Maybe LHsDocString -> [ConDeclField a]
20 addFieldDocs [] _ = []
21 addFieldDocs (x:xs) doc = addFieldDoc x doc : xs
22
23 addConDoc :: LConDecl a -> Maybe LHsDocString -> LConDecl a
24 addConDoc decl    Nothing = decl
25 addConDoc (L p c) doc     = L p ( c { con_doc = con_doc c `mplus` doc } )
26
27 addConDocs :: [LConDecl a] -> Maybe LHsDocString -> [LConDecl a]
28 addConDocs [] _ = []
29 addConDocs [x] doc = [addConDoc x doc]
30 addConDocs (x:xs) doc = x : addConDocs xs doc
31
32 addConDocFirst :: [LConDecl a] -> Maybe LHsDocString -> [LConDecl a]
33 addConDocFirst [] _ = []
34 addConDocFirst (x:xs) doc = addConDoc x doc : xs