Почему ocamldoc не работает на несвязанных модулях?

Вот пример интерфейса test.mliс комментариями в стиле ocamldoc:

(** ocamldoc module comment *)
open MissingModule;;
(** ocamldoc function comment *)
val test : unit;;

Если я запускаю команду ocamldoc test.mliЯ получаю следующую ошибку:

File "test.mli", line 2, characters 0-9:
Error: Unbound module MissingModule
1 error(s) encountered

Почему генератор документации должен заботиться о несвязанных модулях?

1 ответ

Решение

Это потому что ocamldoc полностью уточняет имена типов. Файл:

open MissingModule

val f: foo -> unit

переводится на

val f: MissingModule.foo -> unit

А также MissingModule.foo становится хорошей перекрестной ссылкой на определение foo в MissingModule (если missingModule.mli дается в качестве аргумента ocamldoc).

И чтобы завершить ответ, чтобы полностью определить тип идентификаторов, вам нужно ввести файл, который вы обрабатываете. Так ocamldoc должен иметь возможность доступа к соответствующему .cmi файлы.

Другие вопросы по тегам