Module Brzo_ocaml_be

OCaml domain best-effort helpers.

Resolver helpers

type ambs = [
| `Ambs of (Brzo_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:Brzo_b0_ocaml.Mod_src.t Brzo_b0_ocaml.Mod_name.Map.t -> in_dir:B0_std.Fpath.t -> Brzo_b0_ocaml.Mod_name.Set.t -> (B0_std.Fpath.t list * B0_std.Fpath.t list * Brzo_b0_ocaml.Mod_name.Set.t * ambs) B00.Memo.fiber

resolve_intf_deps is like resolve_impl_deps but for compiling and interface.

val resolve_impl_deps : Brzo_b0_ocaml.Mod_resolver.t -> code:Brzo_b0_ocaml.Cobj.code -> local_mods:Brzo_b0_ocaml.Mod_src.t Brzo_b0_ocaml.Mod_name.Map.t -> in_dir:B0_std.Fpath.t -> Brzo_b0_ocaml.Mod_name.Set.t -> (B0_std.Fpath.t list * B0_std.Fpath.t list * Brzo_b0_ocaml.Mod_name.Set.t * ambs) B00.Memo.fiber

resolve_comp_deps r ~code ~local_mods ~in_dir deps resolve deps for compiling an implementation to code assuming local module local_mods are compiled in in_dir. This results in local_objs, ext_objs, unresolved, amb with:

  • local_deps are path to compilation objects that corresponds to local_mods.
  • ext_objs are external compilatino objects as resolved by r and its constraints.
  • unresolved are the elements of deps 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 -> ambs -> unit B00.Memo.fiber

handle_amb_deps file ambs continues if ambs is empty and otherwise fails the fiber with help on how to restrict the resolver. 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 with k if miss is empty and otherwise fails the fiber with help on how to try to get the missing dependencies.