The fromJust error is a bug, of course, however, the underlying problem is a bit more difficult: Haddock doesn't generate any code, it only typechecks. If the code uses Template Haskell, however, the typechecker will have to run Haskell code and potentially this code will have to come from a module of the same package. If the code indeed comes from the same package, fixing the fromJust error will just lead to GHCi linker error, since Haddock didn't generate any code for these. Here are a couple of solutions and non-solutions: - Detect whether a package uses TH by looking at the ghc flags and the OPTIONS pragmas. This might work in many cases, but: - We cannot generate Bytecode for all modules, because unboxed tuples and foreign exports are not supported by GHCi. This drawback would only affect a few packages, though, and cpp magic could hide the tricky parts from Haddock. - The bigger issue is security. TH can run arbitrary IO actions so, by default, we should just fail, and only enable it if the user says so. - Skip modules using TH. Won't work, because other modules may depend on those modules. We also cannot know which modules may require TH if the flag is set globally. - Disallow TH. That'll require a way to use #ifdef's to show alternative code. I guess, that's the current workaround. - Do a best-effort Renaming pass and run the typechecker without trying to resolve Splices. Lot's of work and may result to incorrect documentation, so I'm not sure it's worth it. Any other? / Thomas 2008/12/12 Sean Leather <leather@cs.uu.nl>:
I've been using "cabal haddock" to run haddock on my package. I also get the same error using haddock directly:
$ haddock -odir=tmp --debug --verbose --html Generics/EMGM.hs haddock: internal Haddock or GHC error: Maybe.fromJust: Nothing
Have you filed a ticket for this in the haddock trac so that he doesn't forget? http://trac.haskell.org/haddock/
There seemed to be perhaps one or two tickets related, but I wasn't sure if any exactly matched the issue, so I created a new one with a minimal testcase.
And for anyone who later comes upon this thread seeking an answer to a similar problem, this is apparently a bug in the GHC API on which Haddock is dependent:
http://hackage.haskell.org/trac/ghc/ticket/2739
Regards, Sean
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Push the envelope. Watch it bend.