X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Frename%2FRnHsDoc.hs;h=c556d2c3da4973ea5f30543b52b34e6ee7d1099c;hb=46f02d59813499ba2aa44e7831e0b69ec6d8f25d;hp=6941da59c162a1dc6270d2fbfd72b75051aaf136;hpb=190f24892156953d73b55401d0467a6f1a88ce5d;p=ghc-hetmet.git diff --git a/compiler/rename/RnHsDoc.hs b/compiler/rename/RnHsDoc.hs index 6941da5..c556d2c 100644 --- a/compiler/rename/RnHsDoc.hs +++ b/compiler/rename/RnHsDoc.hs @@ -1,33 +1,49 @@ -module RnHsDoc ( rnHsDoc, rnLHsDoc, rnMbLHsDoc, rnMbHsDoc ) where +module RnHsDoc ( rnHaddock, rnHsDoc, rnLHsDoc, rnMbLHsDoc ) where + +import TcRnTypes import TcRnMonad ( RnM ) -import RnEnv ( dataTcOccs, lookupGreRn ) -import HsDoc ( HsDoc(..) ) +import RnEnv ( dataTcOccs, lookupGreRn_maybe ) +import HsSyn -import RdrName ( RdrName, isRdrDataCon, isRdrTc, gre_name ) +import RdrName ( RdrName, gre_name ) import Name ( Name ) import SrcLoc ( Located(..) ) import Outputable ( ppr, defaultUserStyle ) -import Data.List ( (\\) ) -import Debug.Trace ( trace ) +rnHaddock :: HaddockModInfo RdrName -> Maybe (HsDoc RdrName) + -> TcGblEnv -> RnM TcGblEnv +rnHaddock module_info maybe_doc tcg_env + = do { rn_module_doc <- rnMbHsDoc maybe_doc ; + + -- Rename the Haddock module info + ; rn_description <- rnMbHsDoc (hmi_description module_info) + ; let { rn_module_info = module_info { hmi_description = rn_description } } + + ; return (tcg_env { tcg_doc = rn_module_doc, + tcg_hmi = rn_module_info }) } + +rnMbHsDoc :: Maybe (HsDoc RdrName) -> RnM (Maybe (HsDoc Name)) rnMbHsDoc mb_doc = case mb_doc of Just doc -> do doc' <- rnHsDoc doc return (Just doc') Nothing -> return Nothing +rnMbLHsDoc :: Maybe (LHsDoc RdrName) -> RnM (Maybe (LHsDoc Name)) rnMbLHsDoc mb_doc = case mb_doc of Just doc -> do doc' <- rnLHsDoc doc return (Just doc') Nothing -> return Nothing +rnLHsDoc :: LHsDoc RdrName -> RnM (LHsDoc Name) rnLHsDoc (L pos doc) = do doc' <- rnHsDoc doc return (L pos doc') +ids2string :: [RdrName] -> String ids2string [] = [] ids2string (x:_) = show $ ppr x defaultUserStyle @@ -49,7 +65,7 @@ rnHsDoc doc = case doc of DocIdentifier ids -> do let choices = concatMap dataTcOccs ids - mb_gres <- mapM lookupGreRn choices + mb_gres <- mapM lookupGreRn_maybe choices case [gre_name gre | Just gre <- mb_gres] of [] -> return (DocString (ids2string ids)) ids' -> return (DocIdentifier ids') @@ -85,4 +101,6 @@ rnHsDoc doc = case doc of DocURL str -> return (DocURL str) + DocPic str -> return (DocPic str) + DocAName str -> return (DocAName str)