Почему 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
файлы.