haddock fails with "internal error: spliceURL UnhelpfulSpan"
This bug has already been submitted on the haddock trac system.
http://trac.haskell.org/haddock/ticket/207
I am reflecting it here as the bug is still valid as of the haddock version 2.11.0 included in ghc 7.4.2.
Symptom: if a declaration is missing a type signature, as in
module HaddockBug (
haddockbug
) where
-- missing type signature
haddockbug x = x + 1
haddock called with the command line
haddock -h HaddockBug.hs --source-entity=HaddockBug.html#line-%L
fails with
internal error: spliceURL UnhelpfulSpan
In case it is of any help, here is the patch I am using to overcome the problem.
diff -r -u haddock-ghc-7.4.2/src/Haddock/Interface/Create.hs haddock/src/Haddock/Interface/Create.hs
--- haddock-ghc-7.4.2/src/Haddock/Interface/Create.hs 2012-08-30 10:12:42.149210546 -0400
+++ haddock/src/Haddock/Interface/Create.hs 2012-08-30 10:13:08.745620048 -0400
@@ -19,6 +19,7 @@
import Haddock.Utils
import Haddock.Convert
import Haddock.Interface.LexParseRn
+import Haddock.Interface.Rename
import qualified Data.Map as M
import Data.Map (Map)
@@ -41,6 +42,25 @@
import TcRnTypes
import FastString (unpackFS)
+-- | To filter out the ExportItem's that are UnhelpfulSpan.
+isHelpfulSpan :: ExportItem Name -> ErrMsgM Bool
+isHelpfulSpan l = case l of
+ (ExportDecl (L (UnhelpfulSpan _) _) _ _ _) -> do
+ tell [concat ["Warning: ",
+ extractName l,
+ " is exported but does not have a type signature. ",
+ "Skipping it..."]]
+ return False
+ _ -> return True
+ where
+
+ -- This is reusing renameExportItem and runRnFM from
+ -- Haddock.Interface.Rename.
+ --
+ -- We use an empty environment for simplicity: for the sake
+ -- of the warning, we know in which module this takes place.
+ extractName :: ExportItem Name -> String
+ extractName e = show $ getOccString $ head $ snd $ runRnFM M.empty $ renameExportItem e
-- | Use a 'TypecheckedModule' to produce an 'Interface'.
-- To do this, we need access to already processed modules in the topological
@@ -91,6 +111,7 @@
let warningMap = mkWarningMap warnings gre exportedNames
exportItems <- mkExportItems modMap mdl warningMap gre exportedNames decls maps exports
instances instIfaceMap dflags
+ >>= (liftErrMsg . filterM isHelpfulSpan)
let visibleNames = mkVisibleNames exportItems opts
diff -r -u haddock-ghc-7.4.2/src/Haddock/Interface/Rename.hs haddock/src/Haddock/Interface/Rename.hs
--- haddock-ghc-7.4.2/src/Haddock/Interface/Rename.hs 2012-08-30 10:12:42.149210546 -0400
+++ haddock/src/Haddock/Interface/Rename.hs 2012-08-29 17:12:47.812702645 -0400
@@ -9,7 +9,7 @@
-- Stability : experimental
-- Portability : portable
-----------------------------------------------------------------------------
-module Haddock.Interface.Rename (renameInterface) where
+module Haddock.Interface.Rename (renameInterface,renameExportItem,runRnFM) where
import Haddock.GhcUtils
Trac metadata
Trac field | Value |
---|---|
Version | 7.4.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Documentation |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |