diff options
author | Oleg Grenrus <oleg.grenrus@iki.fi> | 2015-09-28 07:21:11 +0300 |
---|---|---|
committer | Oleg Grenrus <oleg.grenrus@iki.fi> | 2015-09-28 07:21:11 +0300 |
commit | dee8ef2b918917a1469f35b24d7bd9f7caa59d62 (patch) | |
tree | 797fe07a3a385f3cceb73dd79c9e78c22c17a38a /haddock-api/src | |
parent | 02e633a6f9b7ccb53a92a838c1b717ef9f3737fc (diff) |
Have source links for orphan instances
Diffstat (limited to 'haddock-api/src')
-rw-r--r-- | haddock-api/src/Haddock/Interface.hs | 2 | ||||
-rw-r--r-- | haddock-api/src/Haddock/Interface/AttachInstances.hs | 20 |
2 files changed, 9 insertions, 13 deletions
diff --git a/haddock-api/src/Haddock/Interface.hs b/haddock-api/src/Haddock/Interface.hs index 1bb04ed3..8b04d76b 100644 --- a/haddock-api/src/Haddock/Interface.hs +++ b/haddock-api/src/Haddock/Interface.hs @@ -228,7 +228,7 @@ buildHomeLinks ifaces = foldl upd Map.empty (reverse ifaces) foldl' keep_old old_env exported_names | otherwise = foldl' keep_new old_env exported_names where - exported_names = ifaceVisibleExports iface + exported_names = ifaceVisibleExports iface ++ map getName (ifaceInstances iface) mdl = ifaceMod iface keep_old env n = Map.insertWith (\_ old -> old) n mdl env keep_new env n = Map.insert n mdl env diff --git a/haddock-api/src/Haddock/Interface/AttachInstances.hs b/haddock-api/src/Haddock/Interface/AttachInstances.hs index c3e1275e..5adee457 100644 --- a/haddock-api/src/Haddock/Interface/AttachInstances.hs +++ b/haddock-api/src/Haddock/Interface/AttachInstances.hs @@ -66,23 +66,13 @@ attachInstances expInfo ifaces instIfaceMap = mapM attach ifaces , ifaceOrphanInstances = orphanInstances } -spanName :: NamedThing a => a -> InstHead e -> GenLocated SrcSpan e -> GenLocated SrcSpan e -spanName s (InstHead { ihdClsName = clsn }) (L instL instn) = - let s1 = getSrcSpan s - sn = if srcSpanFileName_maybe s1 == srcSpanFileName_maybe instL - then instn - else clsn - in L (getSrcSpan s) sn - attachOrphanInstances :: ExportInfo -> Interface -> IfaceMap -> InstIfaceMap -> [ClsInst] -> [DocInstance Name] attachOrphanInstances expInfo iface ifaceMap instIfaceMap cls_instances = - [ (synifyInstHead i, instLookup instDocMap n iface ifaceMap instIfaceMap, spanName n (synifyInstHead i) (L noSrcSpan n)) + [ (synifyInstHead i, instLookup instDocMap n iface ifaceMap instIfaceMap, (L (getSrcSpan n) n)) | let is = [ (instanceHead' i, getName i) | i <- cls_instances, isOrphan (is_orphan i) ] , (i@(_,_,cls,tys), n) <- sortBy (comparing $ first instHead) is , not $ isInstanceHidden expInfo cls tys ] - where - -- spanName: attach the location to the name that is the same file as the instance location attachToExportItem :: ExportInfo -> Interface -> IfaceMap -> InstIfaceMap @@ -128,7 +118,13 @@ attachToExportItem expInfo iface ifaceMap instIfaceMap export = ] } attachFixities e = e - + -- spanName: attach the location to the name that is the same file as the instance location + spanName s (InstHead { ihdClsName = clsn }) (L instL instn) = + let s1 = getSrcSpan s + sn = if srcSpanFileName_maybe s1 == srcSpanFileName_maybe instL + then instn + else clsn + in L (getSrcSpan s) sn -- spanName on Either spanNameE s (Left e) _ = L (getSrcSpan s) (Left e) spanNameE s (Right ok) linst = |