diff options
-rw-r--r-- | src/Haddock/Backends/DevHelp.hs | 4 | ||||
-rw-r--r-- | src/Haddock/Backends/Html.hs | 106 | ||||
-rw-r--r-- | src/Haddock/DocName.hs | 50 | ||||
-rw-r--r-- | src/Haddock/GHC/Utils.hs | 4 | ||||
-rw-r--r-- | src/Haddock/Interface.hs | 19 | ||||
-rw-r--r-- | src/Haddock/Interface/AttachInstances.hs | 2 | ||||
-rw-r--r-- | src/Haddock/Interface/Rename.hs | 13 | ||||
-rw-r--r-- | src/Haddock/InterfaceFile.hs | 23 | ||||
-rw-r--r-- | src/Haddock/ModuleTree.hs | 2 | ||||
-rw-r--r-- | src/Haddock/Types.hs | 21 | ||||
-rw-r--r-- | src/Haddock/Utils.hs | 11 | ||||
-rw-r--r-- | src/Main.hs | 2 |
12 files changed, 141 insertions, 116 deletions
diff --git a/src/Haddock/Backends/DevHelp.hs b/src/Haddock/Backends/DevHelp.hs index 85eb6399..3ba7baf3 100644 --- a/src/Haddock/Backends/DevHelp.hs +++ b/src/Haddock/Backends/DevHelp.hs @@ -12,7 +12,7 @@ import Haddock.Utils import Module ( moduleName, moduleNameString, Module, mkModule, mkModuleName ) import PackageConfig ( stringToPackageId ) -import Name ( Name, nameModule, getOccString ) +import Name ( Name, nameModule, getOccString, nameOccName ) import Data.Maybe ( fromMaybe ) import qualified Data.Map as Map @@ -77,5 +77,5 @@ ppDevHelpFile odir doctitle maybe_package modules = do ppReference :: Name -> [Module] -> Doc ppReference name [] = empty ppReference name (mod:refs) = - text "<function name=\""<>text (escapeStr (getOccString name))<>text"\" link=\""<>text (nameHtmlRef mod name)<>text"\"/>" $$ + text "<function name=\""<>text (escapeStr (getOccString name))<>text"\" link=\""<>text (nameHtmlRef mod (nameOccName name))<>text"\"/>" $$ ppReference name refs diff --git a/src/Haddock/Backends/Html.hs b/src/Haddock/Backends/Html.hs index cd35e9f6..45bffdcd 100644 --- a/src/Haddock/Backends/Html.hs +++ b/src/Haddock/Backends/Html.hs @@ -14,6 +14,7 @@ module Haddock.Backends.Html ( import Prelude hiding (div) +import Haddock.DocName import Haddock.Backends.DevHelp import Haddock.Backends.HH import Haddock.Backends.HH2 @@ -660,7 +661,7 @@ doDecl summary links x (L loc d) mbDoc instances docMap = doDecl d where doDecl (TyClD d) = doTyClD d doDecl (SigD (TypeSig (L _ n) (L _ t))) = - ppFunSig summary links loc mbDoc (getName n) t + ppFunSig summary links loc mbDoc (docNameOrig n) t doDecl (ForD d) = ppFor summary links loc mbDoc d doTyClD d0@(TyData {}) = ppDataDecl summary links instances x loc mbDoc d0 @@ -672,7 +673,8 @@ ppFunSig :: Bool -> LinksInfo -> SrcSpan -> Maybe (HsDoc DocName) -> Name -> HsType DocName -> HtmlTable ppFunSig summary links loc mbDoc name typ = ppTypeOrFunSig summary links loc name typ mbDoc - (ppTypeSig summary name typ, ppBinder False name, dcolon) + (ppTypeSig summary (nameOccName name) typ, + ppBinder False (nameOccName name), dcolon) ppTypeOrFunSig :: Bool -> LinksInfo -> SrcSpan -> Name -> HsType DocName -> @@ -721,10 +723,10 @@ ppTypeOrFunSig summary links loc name typ doc (pref1, pref2, sep) ppTyVars tvs = ppTyNames (tyvarNames tvs) tyvarNames = map f - where f x = let NoLink n = hsTyVarName (unLoc x) in n + where f x = docNameOrig . hsTyVarName . unLoc $ x ppFor summary links loc mbDoc (ForeignImport (L _ name) (L _ typ) _) - = ppFunSig summary links loc mbDoc (getName name) typ + = ppFunSig summary links loc mbDoc (docNameOrig name) typ ppFor _ _ _ _ _ = error "ppFor" -- we skip type patterns for now @@ -732,12 +734,13 @@ ppTySyn summary links loc mbDoc (TySynonym (L _ name) ltyvars _ ltype) = ppTypeOrFunSig summary links loc n (unLoc ltype) mbDoc (full, hdr, spaceHtml +++ equals) where - hdr = hsep ([keyword "type", ppBinder summary n] ++ ppTyVars ltyvars) + hdr = hsep ([keyword "type", ppBinder summary occ] ++ ppTyVars ltyvars) full = hdr <+> equals <+> ppLType ltype - NoLink n = name + n = docNameOrig name + occ = docNameOcc name -ppTypeSig :: Bool -> Name -> HsType DocName -> Html +ppTypeSig :: Bool -> OccName -> HsType DocName -> Html ppTypeSig summary nm ty = ppBinder summary nm <+> dcolon <+> ppType ty @@ -762,7 +765,7 @@ ppAppNameTypes n ts = ppTypeApp n ts ppDocName ppParendType -- | Print an application of a DocName and a list of Names ppDataClassHead :: Bool -> DocName -> [Name] -> Html ppDataClassHead summ n ns = - ppTypeApp n ns (ppBinder summ . getName) ppTyName + ppTypeApp n ns (ppBinder summ . docNameOcc) ppTyName -- | General printing of type applications @@ -771,7 +774,7 @@ ppTypeApp n ts@(t1:t2:rest) ppDN ppT | operator, not . null $ rest = parens opApp <+> hsep (map ppT rest) | operator = opApp where - operator = isNameSym . getName $ n + operator = isNameSym . docNameOrig $ n opApp = ppT t1 <+> ppDN n <+> ppT t2 ppTypeApp n ts ppDN ppT = ppDN n <+> hsep (map ppT ts) @@ -835,12 +838,12 @@ ppShortClassDecl summary links (ClassDecl lctxt lname tvs fds sigs _ ats _) loc vanillaTable << aboves ([ ppAT summary at | L _ at <- ats ] ++ [ ppFunSig summary links loc mbDoc n typ - | L _ (TypeSig (L _ (NoLink n)) (L _ typ)) <- sigs - , let mbDoc = Map.lookup n docMap ]) + | L _ (TypeSig (L _ fname) (L _ typ)) <- sigs + , let n = docNameOrig fname, let mbDoc = Map.lookup n docMap ]) ) where hdr = ppClassHdr summary lctxt (unLoc lname) tvs fds - NoLink nm = unLoc lname + nm = docNameOrig . unLoc $ lname ppAT summary at = case at of TyData {} -> topDeclBox links loc nm (ppDataHeader summary at) @@ -863,7 +866,7 @@ ppClassDecl summary links instances orig_c loc mbDoc docMap | null lsigs = topDeclBox links loc nm hdr | otherwise = topDeclBox links loc nm (hdr <+> keyword "where") - NoLink nm = unLoc lname + nm = docNameOrig . unLoc $ lname ctxt = unLoc lctxt hdr = ppClassHdr summary lctxt (unLoc lname) ltyvars lfds @@ -877,9 +880,9 @@ ppClassDecl summary links instances orig_c loc mbDoc docMap | otherwise = s8 </> methHdr </> tda [theclass "body"] << vanillaTable << ( - abovesSep s8 [ ppFunSig summary links loc mbDoc (orig n) typ - | L _ (TypeSig n (L _ typ)) <- lsigs - , let mbDoc = Map.lookup (orig n) docMap ] + abovesSep s8 [ ppFunSig summary links loc mbDoc (docNameOrig n) typ + | L _ (TypeSig (L _ n) (L _ typ)) <- lsigs + , let mbDoc = Map.lookup (docNameOrig n) docMap ] ) instId = collapseId nm @@ -901,9 +904,6 @@ ppInstHead (ctxt, n, ts) = ppContextNoLocs ctxt <+> ppAppNameTypes n ts -- ----------------------------------------------------------------------------- -- Data & newtype declarations -orig (L _ (NoLink name)) = name -orig _ = error "orig" - -- TODO: print contexts ppShortDataDecl :: Bool -> LinksInfo -> SrcSpan -> @@ -937,7 +937,7 @@ ppShortDataDecl summary links loc mbDoc dataDecl doConstr c con = declBox (toHtml [c] <+> ppShortConstr summary (unLoc con)) doGADTConstr con = declBox (ppShortConstr summary (unLoc con)) - name = orig (tcdLName dataDecl) + name = docNameOrig . unLoc . tcdLName $ dataDecl context = unLoc (tcdCtxt dataDecl) newOrData = tcdND dataDecl tyVars = tyvarNames (tcdTyVars dataDecl) @@ -962,7 +962,7 @@ ppDataDecl summary links instances x loc mbDoc dataDecl where - name = orig (tcdLName dataDecl) + name = docNameOrig . unLoc . tcdLName $ dataDecl context = unLoc (tcdCtxt dataDecl) newOrData = tcdND dataDecl tyVars = tyvarNames (tcdTyVars dataDecl) @@ -1019,11 +1019,11 @@ ppShortConstr :: Bool -> ConDecl DocName -> Html ppShortConstr summary con = case con_res con of ResTyH98 -> case con_details con of - PrefixCon args -> header +++ hsep (ppBinder summary name : map ppLType args) - RecCon fields -> header +++ ppBinder summary name <+> + PrefixCon args -> header +++ hsep (ppBinder summary occ : map ppLType args) + RecCon fields -> header +++ ppBinder summary occ <+> braces (vanillaTable << aboves (map (ppShortField summary) fields)) InfixCon arg1 arg2 -> header +++ - hsep [ppLType arg1, ppBinder summary name, ppLType arg2] + hsep [ppLType arg1, ppBinder summary occ, ppLType arg2] ResTyGADT resTy -> case con_details con of PrefixCon args -> doGADTCon args resTy @@ -1031,12 +1031,12 @@ ppShortConstr summary con = case con_res con of InfixCon arg1 arg2 -> doGADTCon [arg1, arg2] resTy where - doGADTCon args resTy = ppBinder summary name <+> dcolon <+> hsep [ + doGADTCon args resTy = ppBinder summary occ <+> dcolon <+> hsep [ ppForAll forall ltvs lcontext, ppLType (foldr mkFunTy resTy args) ] header = ppConstrHdr forall tyVars context - name = orig (con_name con) + occ = docNameOcc . unLoc . con_name $ con ltvs = con_qvars con tyVars = tyvarNames ltvs lcontext = con_cxt con @@ -1060,17 +1060,17 @@ ppSideBySideConstr (L _ con) = case con_res con of ResTyH98 -> case con_details con of PrefixCon args -> - argBox (hsep ((header +++ ppBinder False name) : map ppLType args)) + argBox (hsep ((header +++ ppBinder False occ) : map ppLType args)) <-> maybeRDocBox mbLDoc RecCon fields -> - argBox (header +++ ppBinder False name) <-> + argBox (header +++ ppBinder False occ) <-> maybeRDocBox mbLDoc </> (tda [theclass "body"] << spacedTable1 << aboves (map ppSideBySideField fields)) InfixCon arg1 arg2 -> - argBox (hsep [header+++ppLType arg1, ppBinder False name, ppLType arg2]) + argBox (hsep [header+++ppLType arg1, ppBinder False occ, ppLType arg2]) <-> maybeRDocBox mbLDoc ResTyGADT resTy -> case con_details con of @@ -1079,14 +1079,14 @@ ppSideBySideConstr (L _ con) = case con_res con of InfixCon arg1 arg2 -> doGADTCon [arg1, arg2] resTy where - doGADTCon args resTy = argBox (ppBinder False name <+> dcolon <+> hsep [ + doGADTCon args resTy = argBox (ppBinder False occ <+> dcolon <+> hsep [ ppForAll forall ltvs (con_cxt con), ppLType (foldr mkFunTy resTy args) ] ) <-> maybeRDocBox mbLDoc header = ppConstrHdr forall tyVars context - name = orig (con_name con) + occ = docNameOcc . unLoc . con_name $ con ltvs = con_qvars con tyVars = tyvarNames (con_qvars con) context = unLoc (con_cxt con) @@ -1095,8 +1095,8 @@ ppSideBySideConstr (L _ con) = case con_res con of mkFunTy a b = noLoc (HsFunTy a b) ppSideBySideField :: ConDeclField DocName -> HtmlTable -ppSideBySideField (ConDeclField lname ltype mbLDoc) = - argBox (ppBinder False (orig lname) +ppSideBySideField (ConDeclField (L _ name) ltype mbLDoc) = + argBox (ppBinder False (docNameOcc name) <+> dcolon <+> ppLType ltype) <-> maybeRDocBox mbLDoc @@ -1128,9 +1128,9 @@ ppHsFullConstr (HsRecDecl _ nm tvs ctxt fields doc) = -} ppShortField :: Bool -> ConDeclField DocName -> HtmlTable -ppShortField summary (ConDeclField lname ltype _) +ppShortField summary (ConDeclField (L _ name) ltype _) = tda [theclass "recfield"] << ( - ppBinder summary (orig lname) + ppBinder summary (docNameOcc name) <+> dcolon <+> ppLType ltype ) @@ -1272,8 +1272,8 @@ ppr_mono_ty ctxt_prec (HsOpTy ty1 op ty2) = maybeParen ctxt_prec pREC_OP $ ppr_mono_lty pREC_OP ty1 <+> ppr_op <+> ppr_mono_lty pREC_OP ty2 where - ppr_op = if not (isNameSym name) then quote (ppLDocName op) else ppLDocName op - name = getName . unLoc $ op + ppr_op = if not (isSymOcc occName) then quote (ppLDocName op) else ppLDocName op + occName = docNameOcc . unLoc $ op ppr_mono_ty ctxt_prec (HsParTy ty) = parens (ppr_mono_lty pREC_TOP ty) @@ -1300,28 +1300,34 @@ ppRdrName = ppOccName . rdrNameOcc ppLDocName (L _ d) = ppDocName d ppDocName :: DocName -> Html -ppDocName (Link name) = linkId (nameModule name) (Just name) << ppName name -ppDocName (NoLink name) = toHtml (getOccString name) +ppDocName (Documented name mod) = + linkIdOcc mod (Just occName) << ppOccName occName + where occName = nameOccName name +ppDocName (Undocumented name) = toHtml (getOccString name) -linkTarget :: Name -> Html -linkTarget name = namedAnchor (anchorNameStr name) << toHtml "" +linkTarget :: OccName -> Html +linkTarget n = namedAnchor (anchorNameStr n) << toHtml "" ppName :: Name -> Html ppName name = toHtml (getOccString name) -ppBinder :: Bool -> Name -> Html +ppBinder :: Bool -> OccName -> Html -- The Bool indicates whether we are generating the summary, in which case -- the binder will be a link to the full definition. -ppBinder True nm = linkedAnchor (anchorNameStr nm) << ppBinder' nm -ppBinder False nm = linkTarget nm +++ bold << ppBinder' nm +ppBinder True n = linkedAnchor (anchorNameStr n) << ppBinder' n +ppBinder False n = linkTarget n +++ bold << ppBinder' n + +ppBinder' :: OccName -> Html +ppBinder' n + | isSymOcc n = parens $ toHtml (occNameString n) + | otherwise = toHtml (occNameString n) + + +linkId mod mbName = linkIdOcc mod (fmap nameOccName mbName) -ppBinder' :: Name -> Html -ppBinder' name - | isNameVarSym name = parens $ toHtml (getOccString name) - | otherwise = toHtml (getOccString name) -linkId :: Module -> Maybe Name -> Html -> Html -linkId mod mbName = anchor ! [href hr] +linkIdOcc :: Module -> Maybe OccName -> Html -> Html +linkIdOcc mod mbName = anchor ! [href hr] where hr = case mbName of Nothing -> moduleHtmlFile mod diff --git a/src/Haddock/DocName.hs b/src/Haddock/DocName.hs new file mode 100644 index 00000000..bb3cf711 --- /dev/null +++ b/src/Haddock/DocName.hs @@ -0,0 +1,50 @@ +-- +-- Haddock - A Haskell Documentation Tool +-- +-- (c) Simon Marlow 2003 +-- + + +module Haddock.DocName where + + +import Haddock.GHC.Utils + +import GHC +import OccName +import Name +import Binary +import Outputable + + +data DocName = Documented Name Module | Undocumented Name + + +docNameOcc :: DocName -> OccName +docNameOcc = nameOccName . docNameOrig + + +docNameOrig :: DocName -> Name +docNameOrig (Documented name _) = name +docNameOrig (Undocumented name) = name + + +instance Binary DocName where + put_ bh (Documented name mod) = do + putByte bh 0 + put_ bh name + put_ bh mod + put_ bh (Undocumented name) = do + putByte bh 1 + put_ bh name + + get bh = do + h <- getByte bh + case h of + 0 -> do + name <- get bh + mod <- get bh + return (Documented name mod) + 1 -> do + name <- get bh + return (Undocumented name) diff --git a/src/Haddock/GHC/Utils.hs b/src/Haddock/GHC/Utils.hs index cfe0a83b..21c34fc5 100644 --- a/src/Haddock/GHC/Utils.hs +++ b/src/Haddock/GHC/Utils.hs @@ -61,9 +61,7 @@ instance (Outputable a, Outputable b) => Outputable (Map.Map a b) where -- misc -isNameSym n = isNameVarSym n || isNameConSym n -isNameVarSym = isLexVarSym . occNameFS . nameOccName -isNameConSym = isLexConSym . occNameFS . nameOccName +isNameSym = isSymOcc . nameOccName getMainDeclBinder :: HsDecl name -> Maybe name diff --git a/src/Haddock/Interface.hs b/src/Haddock/Interface.hs index 5f40422e..51d8de2c 100644 --- a/src/Haddock/Interface.hs +++ b/src/Haddock/Interface.hs @@ -14,6 +14,7 @@ module Haddock.Interface ( ) where +import Haddock.DocName import Haddock.Interface.Create import Haddock.Interface.AttachInstances import Haddock.Interface.Rename @@ -74,17 +75,15 @@ createInterfaces' modules flags = do -- The interfaces are passed in in topologically sorted order, but we start -- by reversing the list so we can do a foldl. buildHomeLinks :: [Interface] -> LinkEnv -buildHomeLinks modules = foldl upd Map.empty (reverse modules) +buildHomeLinks ifaces = foldl upd Map.empty (reverse ifaces) where - upd old_env mod - | OptHide `elem` ifaceOptions mod = old_env - | OptNotHome `elem` ifaceOptions mod = + upd old_env iface + | OptHide `elem` ifaceOptions iface = old_env + | OptNotHome `elem` ifaceOptions iface = foldl' keep_old old_env exported_names | otherwise = foldl' keep_new old_env exported_names where - exported_names = ifaceVisibleExports mod - modName = ifaceMod mod - - keep_old env n = Map.insertWith (\new old -> old) n - (nameSetMod n modName) env - keep_new env n = Map.insert n (nameSetMod n modName) env + exported_names = ifaceVisibleExports iface + mod = ifaceMod iface + keep_old env n = Map.insertWith (\new old -> old) n mod env + keep_new env n = Map.insert n mod env diff --git a/src/Haddock/Interface/AttachInstances.hs b/src/Haddock/Interface/AttachInstances.hs index d43213c8..e3acc6cf 100644 --- a/src/Haddock/Interface/AttachInstances.hs +++ b/src/Haddock/Interface/AttachInstances.hs @@ -133,7 +133,7 @@ toHsType t = case t of TyConApp tc ts -> case ts of t1:t2:rest - | isNameConSym . tyConName $ tc -> + | isSymOcc . nameOccName . tyConName $ tc -> app (HsOpTy (toLHsType t1) (noLoc . tyConName $ tc) (toLHsType t2)) rest _ -> app (tycon tc) ts diff --git a/src/Haddock/Interface/Rename.hs b/src/Haddock/Interface/Rename.hs index 947c3b29..11a0a14c 100644 --- a/src/Haddock/Interface/Rename.hs +++ b/src/Haddock/Interface/Rename.hs @@ -8,6 +8,7 @@ module Haddock.Interface.Rename (renameInterface) where +import Haddock.DocName import Haddock.Types import Haddock.GHC.Utils @@ -35,7 +36,7 @@ renameInterface renamingEnv mod = -- is mapped to itself, and everything else comes from the global renaming -- env let localEnv = foldl fn renamingEnv (ifaceVisibleExports mod) - where fn env name = Map.insert name (nameSetMod name (ifaceMod mod)) env + where fn env name = Map.insert name (ifaceMod mod) env docs = Map.toList (ifaceDocMap mod) renameMapElem (k,d) = do d' <- renameDoc d; return (k, d') @@ -119,8 +120,8 @@ runRnFM :: LinkEnv -> RnM a -> (a,[Name]) runRnFM env rn = unRn rn lkp where lkp n = case Map.lookup n env of - Nothing -> (False, NoLink n) - Just q -> (True, Link q) + Nothing -> (False, Undocumented n) + Just mod -> (True, Documented n mod) -------------------------------------------------------------------------------- @@ -128,8 +129,8 @@ runRnFM env rn = unRn rn lkp -------------------------------------------------------------------------------- -keep n = NoLink n -keepL (L loc n) = L loc (NoLink n) +keep n = Undocumented n +keepL (L loc n) = L loc (Undocumented n) rename = lookupRn id @@ -162,7 +163,7 @@ renameDoc doc = case doc of lkp <- getLookupRn case [ n | (True, n) <- map lkp ids ] of ids'@(_:_) -> return (DocIdentifier ids') - [] -> return (DocIdentifier (map NoLink ids)) + [] -> return (DocIdentifier (map Undocumented ids)) DocModule str -> return (DocModule str) DocEmphasis doc -> do doc' <- renameDoc doc diff --git a/src/Haddock/InterfaceFile.hs b/src/Haddock/InterfaceFile.hs index fe383336..680e71b7 100644 --- a/src/Haddock/InterfaceFile.hs +++ b/src/Haddock/InterfaceFile.hs @@ -12,6 +12,7 @@ module Haddock.InterfaceFile ( ) where +import Haddock.DocName import Haddock.Types import Haddock.Exception @@ -45,7 +46,7 @@ data InterfaceFile = InterfaceFile { binaryInterfaceMagic = 0xD0Cface :: Word32 -binaryInterfaceVersion = 0 :: Word16 +binaryInterfaceVersion = 1 :: Word16 initBinMemSize = (1024*1024) :: Int @@ -244,26 +245,6 @@ instance Binary InstalledInterface where return (InstalledInterface mod info (Map.fromList docMap) exps visExps) -{-* Generated by DrIFT : Look, but Don't Touch. *-} -instance Binary DocName where - put_ bh (Link aa) = do - putByte bh 0 - put_ bh aa - put_ bh (NoLink ab) = do - putByte bh 1 - put_ bh ab - get bh = do - h <- getByte bh - case h of - 0 -> do - aa <- get bh - return (Link aa) - 1 -> do - ab <- get bh - return (NoLink ab) - _ -> fail "invalid binary data found" - - instance Binary DocOption where put_ bh OptHide = do putByte bh 0 diff --git a/src/Haddock/ModuleTree.hs b/src/Haddock/ModuleTree.hs index f73cf2ee..2413f951 100644 --- a/src/Haddock/ModuleTree.hs +++ b/src/Haddock/ModuleTree.hs @@ -6,7 +6,7 @@ module Haddock.ModuleTree ( ModuleTree(..), mkModuleTree ) where -import Haddock.Types ( DocName ) +import Haddock.DocName import GHC ( HsDoc, Name ) import Module ( Module, moduleNameString, moduleName, modulePackageId ) import PackageConfig ( packageIdString ) diff --git a/src/Haddock/Types.hs b/src/Haddock/Types.hs index 580dc8cc..086469cf 100644 --- a/src/Haddock/Types.hs +++ b/src/Haddock/Types.hs @@ -8,12 +8,17 @@ module Haddock.Types where +import Haddock.GHC.Utils +import Haddock.DocName + import Data.Map (Map) import qualified Data.Map as Map import GHC hiding (NoLink) import Outputable import OccName +import Name + {-! for DocOption derive: Binary !-} data DocOption @@ -78,21 +83,7 @@ data ExportItem name type InstHead name = ([HsPred name], name, [HsType name]) type ModuleMap = Map Module Interface type DocMap = Map Name (HsDoc DocName) -type LinkEnv = Map Name Name - - -{-! for DocName derive: Binary !-} -data DocName = Link Name | NoLink Name - - -instance Outputable DocName where - ppr (Link n) = ppr n - ppr (NoLink n) = ppr n - - -instance NamedThing DocName where - getName (Link n) = n - getName (NoLink n) = n +type LinkEnv = Map Name Module -- | This structure holds the module information we get from GHC's diff --git a/src/Haddock/Utils.hs b/src/Haddock/Utils.hs index b7b215d9..ca21c020 100644 --- a/src/Haddock/Utils.hs +++ b/src/Haddock/Utils.hs @@ -167,8 +167,8 @@ moduleHtmlFile mdl = mdl' = map (\c -> if c == '.' then '-' else c) (moduleNameString (moduleName mdl)) -nameHtmlRef :: Module -> Name -> String -nameHtmlRef mdl str = moduleHtmlFile mdl ++ '#':escapeStr (anchorNameStr str) +nameHtmlRef :: Module -> OccName -> String +nameHtmlRef mdl n = moduleHtmlFile mdl ++ '#':escapeStr (anchorNameStr n) contentsHtmlFile, indexHtmlFile :: String contentsHtmlFile = "index.html" @@ -179,10 +179,9 @@ subIndexHtmlFile a = "doc-index-" ++ b ++ ".html" where b | isAlpha a = [a] | otherwise = show (ord a) -anchorNameStr :: Name -> String -anchorNameStr name | isValOcc occName = "v:" ++ getOccString name - | otherwise = "t:" ++ getOccString name - where occName = nameOccName name +anchorNameStr :: OccName -> String +anchorNameStr name | isValOcc name = "v:" ++ occNameString name + | otherwise = "t:" ++ occNameString name pathJoin :: [FilePath] -> FilePath pathJoin = foldr join [] diff --git a/src/Main.hs b/src/Main.hs index bd2b4830..597048fb 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -13,7 +13,7 @@ module Main (main) where import Haddock.Backends.Html import Haddock.Backends.Hoogle import Haddock.Interface -import Haddock.Types hiding (NoLink) +import Haddock.Types import Haddock.Version import Haddock.InterfaceFile import Haddock.Exception |