New syntax for GADT-style record declarations, and associated refactoring
[ghc-hetmet.git] / compiler / rename / RnHsDoc.hs
index f3d3690..c556d2c 100644 (file)
@@ -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_maybe )
-import HsDoc       ( HsDoc(..) )
+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
 
@@ -85,4 +101,6 @@ rnHsDoc doc = case doc of
 
   DocURL str -> return (DocURL str)
 
+  DocPic str -> return (DocPic str)
+
   DocAName str -> return (DocAName str)