diff --git a/src/odoc.ml b/src/odoc.ml index 9096a338..08f95004 100644 --- a/src/odoc.ml +++ b/src/odoc.ml @@ -501,17 +501,19 @@ module Gen (S : sig val sctx : SC.t end) = struct in SC.packages sctx |> Package.Name.Map.iter ~f:(fun (pkg : Package.t) -> - SC.on_load_dir sctx - ~dir:(Paths.odocs (Pkg pkg.name)) - ~f:(fun () -> - setup_package_odoc_rules - ~pkg - ~mlds:( - docs_by_package pkg - |> List.concat_map ~f:(fun (dir, doc) -> mlds_of_dir doc ~dir) - ) - ~entry_modules_by_lib:modules_by_lib - ); + let rules = lazy ( + setup_package_odoc_rules + ~pkg + ~mlds:( + docs_by_package pkg + |> List.concat_map ~f:(fun (dir, doc) -> mlds_of_dir doc ~dir) + ) + ~entry_modules_by_lib:modules_by_lib + ) in + List.iter [ Paths.odocs (Pkg pkg.name) + ; Paths.gen_mld_dir pkg ] + ~f:(fun dir -> + SC.on_load_dir sctx ~dir ~f:(fun () -> Lazy.force rules)); (* setup @doc to build the correct html for the package *) setup_package_aliases pkg; ); diff --git a/test/blackbox-tests/test-cases/odoc/run.t b/test/blackbox-tests/test-cases/odoc/run.t index bc11aef2..ef7ee3f0 100644 --- a/test/blackbox-tests/test-cases/odoc/run.t +++ b/test/blackbox-tests/test-cases/odoc/run.t @@ -33,5 +33,7 @@ $ $JBUILDER build @foo-mld -j1 --display short --root . - No rule found for _doc/_mlds/foo/index.mld - [1] + {1 Library foo} + This library exposes the following toplevel modules: {!modules:Foo}. + {1 Library foo.byte} + This library exposes the following toplevel modules: {!modules:Foo_byte}.