3

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

cabal haddock --haddock-option=--latex

这最终失败了:

haddock: internal error: declaration not supported by declNames

黑线鳕有什么我能做的或者有什么问题吗?

仅供参考,我必须使用 cabal,因为构建过程相当复杂(很多预处理器,ffi 库,...)。手动调用黑线鳕真的很痛苦。

然而,构建 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
4

1 回答 1

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"

ppDecl( Haddock.Backends.Xhtml.Decl) 中。

实例声明不会传递到declNamesLaTeX 后端,因此它们不会产生错误,但外部声明会(如果导出)。

由于您的模块是Foreign.Java.X,我希望从那里的某个模块中导出一些外部导入或导出,这解释了错误。

似乎需要一个错误报告/功能请求。

于 2013-05-28T13:37:10.600 回答