Skip to content

Commit c95066b

Browse files
committed
Driver: Odoc_unit: Make make_unit polymorphic
1 parent 86de835 commit c95066b

File tree

1 file changed

+18
-21
lines changed

1 file changed

+18
-21
lines changed

src/driver/odoc_unit.ml

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir (pkgs : Packages.t list) :
9090
let output_file = Fpath.(index_dir / pkg.name / Odoc.index_filename) in
9191
{ pkg_args; output_file; json = false; search_dir = pkg.pkg_dir }
9292
in
93-
let rec build_deps deps =
94-
List.filter_map
95-
(fun (_name, hash) ->
96-
match Util.StringMap.find_opt hash hashtable with
97-
| None -> None
98-
| Some (pkg, lib, mod_) ->
99-
let result = of_intf mod_.m_hidden pkg lib mod_.m_intf in
100-
Hashtbl.add cache mod_.m_intf.mif_hash result;
101-
Some result)
102-
deps
103-
and make_unit ~rel_dir ~input_file ~prefix ~pkg ~include_dirs : _ unit =
93+
let make_unit ~kind ~rel_dir ~input_file ~prefix ~pkg ~include_dirs : _ unit =
10494
let ( // ) = Fpath.( // ) in
10595
let ( / ) = Fpath.( / ) in
10696
let filename = input_file |> Fpath.rem_ext |> Fpath.basename in
@@ -118,9 +108,20 @@ let of_packages ~output_dir ~linked_dir ~index_dir (pkgs : Packages.t list) :
118108
odoc_file;
119109
odocl_file;
120110
include_dirs;
121-
kind = ();
111+
kind;
122112
index = index_of pkg;
123113
}
114+
in
115+
let rec build_deps deps =
116+
List.filter_map
117+
(fun (_name, hash) ->
118+
match Util.StringMap.find_opt hash hashtable with
119+
| None -> None
120+
| Some (pkg, lib, mod_) ->
121+
let result = of_intf mod_.m_hidden pkg lib mod_.m_intf in
122+
Hashtbl.add cache mod_.m_intf.mif_hash result;
123+
Some result)
124+
deps
124125
and of_intf hidden pkg libname (intf : Packages.intf) : intf unit =
125126
match Hashtbl.find_opt cache intf.mif_hash with
126127
| Some unit -> unit
@@ -133,11 +134,8 @@ let of_packages ~output_dir ~linked_dir ~index_dir (pkgs : Packages.t list) :
133134
let kind = `Intf { hidden; hash = intf.mif_hash; deps } in
134135
(include_dirs, kind)
135136
in
136-
let unit =
137-
make_unit ~rel_dir ~prefix:"" ~input_file:intf.mif_path ~pkg
138-
~include_dirs
139-
in
140-
{ unit with kind }
137+
make_unit ~kind ~rel_dir ~prefix:"" ~input_file:intf.mif_path ~pkg
138+
~include_dirs
141139
in
142140
let of_impl pkg libname (impl : Packages.impl) : impl unit option =
143141
let open Fpath in
@@ -157,10 +155,9 @@ let of_packages ~output_dir ~linked_dir ~index_dir (pkgs : Packages.t list) :
157155
`Impl { src_id; src_path }
158156
in
159157
let unit =
160-
make_unit ~rel_dir ~input_file:impl.mip_path ~pkg ~include_dirs
158+
make_unit ~kind ~rel_dir ~input_file:impl.mip_path ~pkg ~include_dirs
161159
~prefix:"impl-"
162160
in
163-
let unit = { unit with kind } in
164161
Some unit
165162
in
166163

@@ -191,9 +188,9 @@ let of_packages ~output_dir ~linked_dir ~index_dir (pkgs : Packages.t list) :
191188
let include_dirs = (output_dir // rel_dir) :: include_dirs in
192189
let kind = `Mld in
193190
let unit =
194-
make_unit ~rel_dir ~input_file:mld_path ~pkg ~include_dirs ~prefix:"page-"
191+
make_unit ~kind ~rel_dir ~input_file:mld_path ~pkg ~include_dirs
192+
~prefix:"page-"
195193
in
196-
let unit = { unit with kind } in
197194
[ unit ]
198195
in
199196
let of_package (pkg : Packages.t) : t list =

0 commit comments

Comments
 (0)