Haskell cabal:生成乳胶haddock文档

时间:2013-05-28 12:51:34

标签: haskell documentation latex cabal haddock

我正在尝试通过cabal和haddock生成API文档。我希望它是乳胶。所以我这样做:

cabal haddock --haddock-option=--latex

这最终失败了:

haddock: internal error: declaration not supported by declNames

有什么我可以做的或者是黑线鳕有什么问题吗?

仅供参考,我必须使用cabal,因为构建过程相当复杂(许多预处理器,ffi库,......)。手动调用haddock非常痛苦。

然而,构建HTML文档完全按预期工作。

完整输出位于http://pastebin.com/xt6rWqde

我正在使用:

cabal-install version 0.14.0
using version 1.14.0 of the Cabal library 

The Glorious Glasgow Haskell Compilation System, version 7.4.2

Haddock version 2.11.0, (c) Simon Marlow 2006
Ported to use the GHC API by David Waern 2006-2008

1 个答案:

答案 0 :(得分:3)

我认为这是黑线鳕的一个缺点/错误。在源代码中挖掘一下,错误消息来自declNames中的Haddock/LaTeX.hs

declNames :: LHsDecl DocName -> [DocName]
declNames (L _ decl) = case decl of
  TyClD d  -> [unLoc $ tcdLName d]
  SigD (TypeSig lnames _) -> map unLoc lnames
  _ -> error "declaration not supported by declNames"

因此LaTeX后端仅支持类型类声明和类型签名,传递给declNames的所有其他内容都会生成"declaration not supported by declNames"错误。

在xhtml后端,支持进一步的声明:

ForD d                         -> ppFor summ links loc (mbDoc, fnArgsDoc) d unicode qual
InstD _                        -> noHtml

外部声明生成输出,实例声明不生成。不支持的声明导致

error "declaration not supported by ppDecl"
ppDeclHaddock.Backends.Xhtml.Decl)中的

实例声明不会传递给LaTeX后端中的declNames,因此它们不会生成错误,但是外部声明(如果已导出)。

由于你的模块是Foreign.Java.X,我希望从那里的某个模块导出一些外来的im-或export,这就解释了错误。

似乎要求提供错误报告/功能请求。