From 6b2e3bda07bd9f91c64acdb45c08c021eb160c1f Mon Sep 17 00:00:00 2001 From: Olivier Nicole Date: Wed, 29 Jan 2025 15:53:47 +0100 Subject: [PATCH] Avoid duplicating effect-related flags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérome Vouillon Signed-off-by: Olivier Nicole --- src/dune_rules/jsoo/jsoo_rules.ml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/dune_rules/jsoo/jsoo_rules.ml b/src/dune_rules/jsoo/jsoo_rules.ml index d8de33edbd0..9ceb9fad824 100644 --- a/src/dune_rules/jsoo/jsoo_rules.ml +++ b/src/dune_rules/jsoo/jsoo_rules.ml @@ -93,6 +93,7 @@ module Config : sig val of_string : string -> t val of_flags : string list -> t val to_flags : jsoo_version:Version.t option -> t -> string list + val remove_effect_flags : string list -> string list end = struct type effects_backend = | Cps @@ -243,6 +244,21 @@ end = struct | None -> None) ] ;; + + let remove_effect_flags flags = + let rec loop acc = function + | [] -> acc + | "--enable" :: "effects" :: rest -> loop acc rest + | "--enable=effects" :: rest -> loop acc rest + | "--disable" :: "effects" :: rest -> loop acc rest + | "--disable=effects" :: rest -> loop acc rest + | "--effects" :: _backend :: rest -> loop acc rest + | maybe_effects :: rest when String.is_prefix maybe_effects ~prefix:"--effects=" -> + loop acc rest + | other :: rest -> loop (other :: acc) rest + in + loop [] flags |> List.rev + ;; end let install_jsoo_hint = "opam install js_of_ocaml-compiler" @@ -325,6 +341,13 @@ let js_of_ocaml_rule | Link -> flags.link | Build_runtime -> flags.build_runtime in + let flags = + (* Avoid duplicating effect-related flags *) + Action_builder.map flags ~f:(fun flags -> + match config with + | None -> flags + | Some _ -> Config.remove_effect_flags flags) + in Command.run_dyn_prog ~dir:(Path.build dir) jsoo