diff options
Diffstat (limited to 'src/Haddock')
| -rw-r--r-- | src/Haddock/Interface/Create.hs | 23 | 
1 files changed, 13 insertions, 10 deletions
| diff --git a/src/Haddock/Interface/Create.hs b/src/Haddock/Interface/Create.hs index df952ad8..2634947b 100644 --- a/src/Haddock/Interface/Create.hs +++ b/src/Haddock/Interface/Create.hs @@ -148,13 +148,14 @@ sortByLoc = map unLoc . sortBy (comparing getLoc)  getClassEntities tcd = sortByLoc (docs ++ meths ++ sigs)    where      docs = [ L l (DocEntity d) | L l d <- tcdDocs tcd ] +      meths =         let bindings = bagToList (tcdMeths tcd)            bindingName = unLoc . fun_id        in [ L l (DeclEntity (bindingName b)) | L l b <- bindings ]  -    sigs =  -      let sigName = fromJust . sigNameNoLoc  -      in [ L l (DeclEntity (sigName sig)) | L l sig <- tcdSigs tcd ]   + +    -- TODO: fixities +    sigs = [ L l $ DeclEntity name | L l (TypeSig (L _ name) _) <- tcdSigs tcd ]  -- | Get all the top level entities in a module. The entities are sorted by @@ -170,7 +171,8 @@ getTopEntities group = sortByLoc (docs ++ declarations)               -- we just use the sigs here for now.               -- TODO: collect from the bindings as well                -- (needed for docs to work for inferred entities) -                in [ (l, fromJust (sigNameNoLoc s)) | L l s <- sigs ]  +                in [ (l, fromJust (sigNameNoLoc s)) | L l s <- sigs,  +                      isVanillaLSig (L l s) ] -- TODO: document fixity decls          tyclds = [ (l, tcdName t) | L l t <- hs_tyclds group ]          fords  = [ (l, forName f) | L l f <- hs_fords group ]              where @@ -290,10 +292,7 @@ getDeclFromGroup group name =        [lsig] -> Just (L (getLoc lsig) (SigD (unLoc lsig)))        _      -> Nothing       where  -        matching = [ lsig | lsig <- lsigs, let Just n = sigName lsig, n == name,  -                     isNormal (unLoc lsig) ] -        isNormal (TypeSig _ _) = True -        isNormal _ = False +        matching = [ lsig | L l (TypeSig (L _ n) _) <- lsigs, n == name ]      getDeclFromVals _ = error "getDeclFromVals: illegal input" @@ -314,8 +313,11 @@ getDeclFromGroup group name =        [ltycl] -> Just (L (getLoc ltycl) (TyClD (unLoc ltycl)))        _       -> Nothing        where -        matching = [ ltycl | ltycl <- ltycls,  +        matching = [ fmap makeVanillaTyCl ltycl | ltycl <- ltycls,                       name `elem` map unLoc (tyClDeclNames (unLoc ltycl))] +          where  +            makeVanillaTyCl tycl =  +              tycl { tcdSigs = filter isVanillaLSig (tcdSigs tycl) }      getDeclFromFors lfors = case matching of         [for] -> Just (L (getLoc for) (ForD (unLoc for))) @@ -425,7 +427,8 @@ extractDecl name mdl decl    | otherwise  =        case unLoc decl of        TyClD d | isClassDecl d ->  -        let matches = [ sig | sig <- tcdSigs d, sigName sig == Just name ]  +        let matches = [ sig | sig <- tcdSigs d, sigName sig == Just name, +                        isVanillaLSig sig ] -- TODO: document fixity          in case matches of             [s0] -> let (n, tyvar_names) = name_and_tyvars d                        L pos sig = extractClassDecl n mdl tyvar_names s0 | 
