2013-05-28 1 views
3

Я пытаюсь создать документацию API через cabal и пикшу. Я хочу, чтобы это был латекс. Так что я:Haskell cabal: Создание документации ладонной ладони

cabal haddock --haddock-option=--latex 

Это не может в конечном итоге с:

haddock: internal error: declaration not supported by declNames 

Есть ли что-то я могу сделать, или что-то не так с пикши?

FYI, я должен использовать 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 

ответ

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

Объявление экземпляра не передается в declNames в бэкэнд LaTeX, поэтому они не генерируют ошибку, но внешние декларации (если экспортируются).

Поскольку ваши модули Foreign.Java.X, я ожидаю, что некоторые иностранные импортеры или экспорт будут экспортированы из некоторого модуля там, что объясняет ошибку.

Отчет об ошибке/функция запрос похоже для.

+1

Билет пикши 247: http://trac.haskell.org/haddock/ticket/247. Могу ли я исключить эти модули (содержащие иностранные декларации) из пикши? – scravy

+1

А, нашел. Используя '--hide = ...' можно исключить модуль из haddock - теперь он работает с исключенными модулями, которые содержат иностранные декларации. – scravy

 Смежные вопросы

  • Нет связанных вопросов^_^