3

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
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

インスタンス宣言は LaTeX バックエンドに渡されdeclNamesないため、エラーは生成されませんが、外部宣言は (エクスポートされた場合) 生成されます。

あなたのモジュールはForeign.Java.X.

バグレポート/機能リクエストが必要なようです。

于 2013-05-28T13:37:10.600 に答える