Skip to content
Switch branches/tags

Latest commit

Two fixes and a test:
1. Slightly more recursion needed when expanding `module type of`
   expressions before compilation
2. In the presence of `module type of` expressions and `includes`,
   we can get in the situation when we try to rename elements that
   have been prefixed. This is not an error, though it is unusual.
   we end up labelling the items with different idents, but that's
   fine because all expressions referencing them are using the
   prefixed path anyway.

The test is a much cut-down version of `uwt` that was originally
demonstrating the problem, manifesting as an internal `Failure`
begin raised

Git stats


Failed to load latest commit information.

odoc   OCaml-CI Build Status Coverage Status

odoc is a documentation generator for OCaml. It reads doc comments , delimited with (** ... *), and outputs HTML. See example output.

Text inside doc comments is marked up in ocamldoc syntax:

val compare : string -> string -> int
(** [compare s1 s2] compares [s1] and [s2] in {e lexicographic} order. The
    result is negative if [s1] precedes [s2], positive if [s1] follows [s2],
    and zero if [s1] and [s2] are equal. *)

The syntax reference is here. There is also an explanation of how to attach comments to specific types, values, and other elements in your program.

odoc's main advantage over ocamldoc is an accurate cross-referencer, which handles the complexity of the OCaml module system. odoc also offers a good opportunity to improve HTML output compared to ocamldoc, but this is very much a work in progress :)

Using odoc with OCaml

To install odoc with opam:

opam install odoc

If you want to use odoc on the packages you have installed in your opam switch type:

opam install ocaml-manual odig
odig doc

When you are developing the easiest way to use odoc right now is by having Dune drive it. This command should work in most Dune projects out of the box:

dune build @doc

The generated docs can then be found locally at ./_build/default/_doc/_html/index.html.

Using odoc with BuckleScript/Reason

You can use the bsdoc npm package to use odoc in your BuckleScript projects.


odoc is most discussed on's Ecosystem category with the odoc tag. Please also don't hesitate to open an issue.


Any question asked, issue opened, feedback offered, is a contribution to odoc, and the project and all its users are thankful :) If you'd like to contribute code specifically, you may find the guide in helpful. Also see the roadmap there. If anything is missing from it, please don't hesitate to reach out.