File tree Expand file tree Collapse file tree 6 files changed +24
-12
lines changed Expand file tree Collapse file tree 6 files changed +24
-12
lines changed Original file line number Diff line number Diff line change @@ -78,6 +78,11 @@ let singleton_modules m =
7878 { modules = Modules.With_vlib. singleton m; dep_graphs = Dep_graph.Ml_kind. dummy m }
7979;;
8080
81+ type implements_parameter =
82+ { main_module : Module_name .t
83+ ; implements_parameter : Module_name .t option Resolve.Memo .t
84+ }
85+
8186type t =
8287 { super_context : Super_context .t
8388 ; scope : Scope .t
@@ -87,7 +92,7 @@ type t =
8792 ; requires_compile : Lib .t list Resolve.Memo .t
8893 ; requires_hidden : Lib .t list Resolve.Memo .t
8994 ; requires_link : Lib .t list Resolve .t Memo.Lazy .t
90- ; implements_parameter : ( Module_name .t * Module_name .t option Resolve.Memo .t ) option
95+ ; implements_parameter : implements_parameter option
9196 ; includes : Includes .t
9297 ; preprocessing : Pp_spec .t
9398 ; opaque : bool
@@ -131,7 +136,8 @@ let ocaml t = t.ocaml
131136
132137let implements_parameter t m =
133138 match t.implements_parameter with
134- | Some (root , implements ) when Module_name. equal root (Module. name m) -> implements
139+ | Some { main_module; implements_parameter }
140+ when Module_name. equal main_module (Module. name m) -> implements_parameter
135141 | _ -> Resolve.Memo. return None
136142;;
137143
Original file line number Diff line number Diff line change @@ -18,6 +18,11 @@ type opaque =
1818 | Explicit of bool (* * Set directly by the caller *)
1919 | Inherit_from_settings (* * Determined from the version of OCaml and the profile *)
2020
21+ type implements_parameter =
22+ { main_module : Module_name .t
23+ ; implements_parameter : Module_name .t option Resolve.Memo .t
24+ }
25+
2126(* * Create a compilation context. *)
2227val create
2328 : super_context:Super_context. t
@@ -27,7 +32,7 @@ val create
2732 -> flags:Ocaml_flags. t
2833 -> requires_compile:Lib. t list Resolve.Memo. t
2934 -> requires_link:Lib. t list Resolve. t Memo.Lazy. t
30- -> ?implements_parameter:Module_name. t * Module_name. t option Resolve.Memo. t
35+ -> ?implements_parameter:implements_parameter
3136 -> ?preprocessing:Pp_spec. t
3237 -> opaque:opaque
3338 -> ?stdlib:Ocaml_stdlib. t
Original file line number Diff line number Diff line change @@ -100,12 +100,13 @@ end = struct
100100 match Lib_info. kind lib with
101101 | Dune_file _ ->
102102 Memo. return (Mode.Map.Multi. to_flat_list @@ Lib_info. foreign_archives lib)
103- | Parameter | Virtual ->
103+ | Virtual ->
104104 let + foreign_sources = Dir_contents. foreign_sources dir_contents in
105105 let name = Lib_info. name lib in
106106 let files = Foreign_sources. for_lib foreign_sources ~name in
107107 let { Lib_config. ext_obj; _ } = lib_config in
108108 Foreign.Sources. object_files files ~dir ~ext_obj
109+ | Parameter -> Memo. return []
109110 in
110111 List. rev_append
111112 (List. rev_concat_map
Original file line number Diff line number Diff line change @@ -507,8 +507,11 @@ let cctx (lib : Library.t) ~sctx ~source_modules ~dir ~expander ~scope ~compile_
507507 let vlib = Vimpl. vlib vimpl in
508508 (match Lib_info. kind (Lib. info vlib) with
509509 | Parameter ->
510- let root_module = Module_name. of_local_lib_name lib.name in
511- Some (root_module, Lib. main_module_name vlib)
510+ let main_module = Module_name. of_local_lib_name lib.name in
511+ Some
512+ { Compilation_context. main_module
513+ ; implements_parameter = Lib. main_module_name vlib
514+ }
512515 | _ -> None )
513516 in
514517 let modules = Vimpl. impl_modules vimpl modules in
Original file line number Diff line number Diff line change @@ -368,7 +368,7 @@ let make_lib_modules
368368 | Dune_file _ , None -> Exe_or_normal_lib
369369 | Parameter , None -> Parameter
370370 | Virtual , Some virtual_modules -> Virtual { virtual_modules }
371- | _ -> assert false
371+ | ( Dune_file _ | Parameter ), Some _ | Virtual , None -> assert false
372372 in
373373 Memo. return (Resolve. return (kind, main_module_name, wrapped))
374374 | Some _ ->
Original file line number Diff line number Diff line change @@ -288,7 +288,7 @@ let map_files t ~f =
288288let src_dir t = Source. src_dir t.source
289289let set_pp t pp = { t with pp }
290290
291- let to_dyn { source; obj_name; pp; visibility; kind; install_as; _ } =
291+ let to_dyn { source; obj_name; pp; visibility; kind; install_as } =
292292 Dyn. record
293293 [ " source" , Source. to_dyn source
294294 ; " obj_name" , Module_name.Unique. to_dyn obj_name
@@ -345,10 +345,7 @@ module Obj_map = struct
345345 end )
346346end
347347
348- let encode
349- ({ source; obj_name; pp = _ ; visibility; kind; install_as = _ ; _ } as t )
350- ~src_dir
351- =
348+ let encode ({ source; obj_name; pp = _ ; visibility; kind; install_as = _ } as t ) ~src_dir =
352349 let open Dune_lang.Encoder in
353350 let has_impl = has t ~ml_kind: Impl in
354351 let kind =
You can’t perform that action at this time.
0 commit comments