Module Brzo_ocaml_be
OCaml domain best-effort helpers.
Resolver helpers
type ambs
=[
|
`Ambs of (B0_ocaml.Mod_name.t * B0_std.Fpath.t list) list
]
The type for ambiguous external resolutions. The module name and the list of files that could match.
val resolve_intf_deps : Brzo_b0_ocaml.Mod_resolver.t -> local_mods:B0_ocaml.Mod_src.t B0_ocaml.Mod_name.Map.t -> in_dir:B0_std.Fpath.t -> B0_ocaml.Mod_name.Set.t -> (B0_std.Fpath.t list * B0_std.Fpath.t list * B0_ocaml.Mod_name.Set.t * ambs) B00.Memo.fiber
resolve_intf_deps
is likeresolve_impl_deps
but for compiling and interface.
val resolve_impl_deps : Brzo_b0_ocaml.Mod_resolver.t -> code:B0_ocaml.Cobj.code -> local_mods:B0_ocaml.Mod_src.t B0_ocaml.Mod_name.Map.t -> in_dir:B0_std.Fpath.t -> B0_ocaml.Mod_name.Set.t -> (B0_std.Fpath.t list * B0_std.Fpath.t list * B0_ocaml.Mod_name.Set.t * ambs) B00.Memo.fiber
resolve_comp_deps r ~code ~local_mods ~in_dir deps
resolvedeps
for compiling an implementation tocode
assuming local modulelocal_mods
are compiled inin_dir
. This results inlocal_objs, ext_objs, unresolved, amb
with:local_deps
are path to compilation objects that corresponds tolocal_mods
.ext_objs
are external compilatino objects as resolved byr
and its constraints.unresolved
are the elements ofdeps
that couldn't be resolved.amb
are the external resolutions that were ambiguous.
val handle_amb_deps : Brzo_b0_ocaml.Mod_resolver.t -> B0_std.Fpath.t -> unresolved:B0_ocaml.Mod_name.Set.t -> ambs -> unit B00.Memo.fiber
handle_amb_deps file ~unresolved ambs
continues ifambs
is empty and otherwise fails the fiber with help on how to restrict the resolver or getting unresolved dependencies.file
is the file for which amibguities were reported.
val handle_miss_user_deps : Brzo_b0_ocaml.Mod_resolver.t -> [ `Miss_deps of Brzo_b0_ocaml.Mod_resolver.dep list ] -> unit B00.Memo.fiber
handle_miss_user_deps r miss k
continues withk
ifmiss
is empty and otherwise fails the fiber with help on how to try to get the missing dependencies.