From 64512e4a070a69359bc26d43670cec6abc672caa Mon Sep 17 00:00:00 2001
From: Simon Marlow <simonmar@microsoft.com>
Date: Thu, 6 Dec 2007 14:00:10 +0000
Subject: Source links must point to the original module, not the referring
 module

---
 src/Haddock/Backends/Html.hs | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/Haddock/Backends/Html.hs b/src/Haddock/Backends/Html.hs
index bd709e30..bb0927ca 100644
--- a/src/Haddock/Backends/Html.hs
+++ b/src/Haddock/Backends/Html.hs
@@ -1467,9 +1467,18 @@ topDeclBox ((_,_,maybe_source_url), (_,_,maybe_wiki_url), iface)
           case maybe_source_url of
             Nothing  -> Html.emptyTable
             Just url -> tda [theclass "declbut"] <<
-                          let url' = spliceURL (Just fname) (Just mod)
+                          let url' = spliceURL (Just fname) (Just orig_mod)
                                                (Just name) (Just loc) url
                            in anchor ! [href url'] << toHtml "Source"
+
+        mod = iface_module iface
+
+        -- for source links, we want to point to the original module
+        -- for the name, because only that will have the source.
+        orig_mod = case Map.lookup name (iface_env iface) of
+                      Just (Qual m _) -> m
+                      _               -> mod
+
         wikiLink =
           case maybe_wiki_url of
             Nothing  -> Html.emptyTable
@@ -1478,8 +1487,7 @@ topDeclBox ((_,_,maybe_source_url), (_,_,maybe_wiki_url), iface)
                                                (Just name) (Just loc) url
                            in anchor ! [href url'] << toHtml "Comments"
   
-        mod = ifaceMod iface
-        fname = unpackFS (srcSpanFile loc)
+        mod = iface_module iface
 
 -- a box for displaying an 'argument' (some code which has text to the
 -- right of it).  Wrapping is not allowed in these boxes, whereas it is
-- 
cgit v1.2.3