diff options
Diffstat (limited to 'src/HaddockRename.hs')
-rw-r--r-- | src/HaddockRename.hs | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/src/HaddockRename.hs b/src/HaddockRename.hs index 1953a23c..fa3df77c 100644 --- a/src/HaddockRename.hs +++ b/src/HaddockRename.hs @@ -6,7 +6,7 @@ module HaddockRename ( runRnFM, -- the monad (instance of Monad) - renameMaybeDoc, renameExportItems, + renameDoc, renameMaybeDoc, renameExportItems, ) where import HaddockTypes @@ -70,6 +70,12 @@ runRn lkp rn = unRn rn lkp -- ----------------------------------------------------------------------------- -- Renaming +keep n = NoLink n +keepL (L loc n) = L loc (NoLink n) + +rename = lookupRn id +renameL (L loc name) = return . L loc =<< rename name + renameExportItems :: [ExportItem2 Name] -> RnM [ExportItem2 DocName] renameExportItems items = mapM renameExportItem items @@ -119,9 +125,6 @@ renameDoc doc = case doc of DocURL str -> return (DocURL str) DocAName str -> return (DocAName str) -rename = lookupRn id -renameL (L loc name) = return . L loc =<< rename name - renameLPred (L loc p) = return . L loc =<< renamePred p renamePred :: HsPred Name -> RnM (HsPred DocName) @@ -218,43 +221,40 @@ renameDecl d = case d of _ -> error "renameDecl" renameTyClD d = case d of - ForeignType name a b -> do - name' <- renameL name - return (ForeignType name' a b) + ForeignType _ _ _ -> error "renameTyClD" -- I'm guessing these can't be exported + -- ForeignType name a b -> do + -- name' <- renameL name + -- return (ForeignType name' a b) TyData x lcontext lname ltyvars k cons _ -> do lcontext' <- renameLContext lcontext - lname' <- renameL lname ltyvars' <- mapM renameLTyVarBndr ltyvars cons' <- mapM renameLCon cons -- we don't need the derivings - return (TyData x lcontext' lname' ltyvars' k cons' Nothing) + return (TyData x lcontext' (keepL lname) ltyvars' k cons' Nothing) TySynonym lname ltyvars ltype -> do - lname' <- renameL lname ltyvars' <- mapM renameLTyVarBndr ltyvars ltype' <- renameLType ltype - return (TySynonym lname' ltyvars' ltype') + return (TySynonym (keepL lname) ltyvars' ltype') ClassDecl lcontext lname ltyvars lfundeps lsigs _ _ -> do lcontext' <- renameLContext lcontext - lname' <- renameL lname ltyvars' <- mapM renameLTyVarBndr ltyvars lfundeps' <- mapM renameLFunDep lfundeps lsigs' <- mapM renameLSig lsigs -- we don't need the default methods or the already collected doc entities - return (ClassDecl lcontext' lname' ltyvars' lfundeps' lsigs' emptyBag []) + return (ClassDecl lcontext' (keepL lname) ltyvars' lfundeps' lsigs' emptyBag []) where renameLCon (L loc con) = return . L loc =<< renameCon con renameCon (ConDecl lname expl ltyvars lcontext details restype mbldoc) = do - lname' <- renameL lname ltyvars' <- mapM renameLTyVarBndr ltyvars lcontext' <- renameLContext lcontext details' <- renameDetails details restype' <- renameResType restype mbldoc' <- mapM renameLDoc mbldoc - return (ConDecl lname' expl ltyvars' lcontext' details' restype' mbldoc') + return (ConDecl (keepL lname) expl ltyvars' lcontext' details' restype' mbldoc') renameDetails (RecCon fields) = return . RecCon =<< mapM renameField fields renameDetails (PrefixCon ps) = return . PrefixCon =<< mapM renameLType ps @@ -264,27 +264,22 @@ renameTyClD d = case d of return (InfixCon a' b') renameField (HsRecField id arg doc) = do - id' <- renameL id arg' <- renameLType arg doc' <- mapM renameLDoc doc - return (HsRecField id' arg' doc') + return (HsRecField (keepL id) arg' doc') renameResType (ResTyH98) = return ResTyH98 renameResType (ResTyGADT t) = return . ResTyGADT =<< renameLType t - renameLFunDep (L loc (xs, ys)) = do - xs' <- mapM rename xs - ys' <- mapM rename ys - return (L loc (xs', ys')) + renameLFunDep (L loc (xs, ys)) = return (L loc (map keep xs, map keep ys)) renameLSig (L loc sig) = return . L loc =<< renameSig sig renameSig sig = case sig of - TypeSig lname ltype -> do - lname' <- renameL lname + TypeSig (L loc name) ltype -> do ltype' <- renameLType ltype - return (TypeSig lname' ltype') - SpecSig lname ltype x -> do + return (TypeSig (L loc (keep name)) ltype') +{- SpecSig lname ltype x -> do lname' <- renameL lname ltype' <- renameLType ltype return (SpecSig lname' ltype' x) @@ -297,15 +292,14 @@ renameSig sig = case sig of renameFixitySig (FixitySig lname x) = do lname' <- renameL lname return (FixitySig lname' x) +-} renameForD (ForeignImport lname ltype x y) = do - lname' <- renameL lname ltype' <- renameLType ltype - return (ForeignImport lname' ltype' x y) + return (ForeignImport (keepL lname) ltype' x y) renameForD (ForeignExport lname ltype x y) = do - lname' <- renameL lname ltype' <- renameLType ltype - return (ForeignExport lname' ltype' x y) + return (ForeignExport (keepL lname) ltype' x y) renameExportItem :: ExportItem2 Name -> RnM (ExportItem2 DocName) renameExportItem item = case item of |