aboutsummaryrefslogtreecommitdiff
path: root/haddock-api/src
diff options
context:
space:
mode:
authorOleg Grenrus <oleg.grenrus@iki.fi>2015-09-28 07:21:11 +0300
committerOleg Grenrus <oleg.grenrus@iki.fi>2015-09-28 07:21:11 +0300
commitdee8ef2b918917a1469f35b24d7bd9f7caa59d62 (patch)
tree797fe07a3a385f3cceb73dd79c9e78c22c17a38a /haddock-api/src
parent02e633a6f9b7ccb53a92a838c1b717ef9f3737fc (diff)
Have source links for orphan instances
Diffstat (limited to 'haddock-api/src')
-rw-r--r--haddock-api/src/Haddock/Interface.hs2
-rw-r--r--haddock-api/src/Haddock/Interface/AttachInstances.hs20
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 =