(* -*- tuareg -*- *) #warnings "-40";; open Dune;; open Import;; open Action.Infer.Outcome;; Stdune.Path.set_build_dir (Path.Kind.of_string "_build");; let p = Path.of_string;; let infer (a : Action.t) = let x = Action.Infer.infer a in (List.map (Path.Set.to_list x.deps) ~f:Path.to_string, List.map (Path.Set.to_list x.targets) ~f:Path.to_string) [%%expect{| - : unit = () val p : ?error_loc:Usexp.Loc.t -> string -> Path.t = val infer : Action.t -> string list * string list = |}] infer (Copy (p "a", p "b"));; [%%expect{| - : string list * string list = (["a"], ["b"]) |}] infer (Progn [ Copy (p "a", p "b") ; Copy (p "b", p "c") ]);; [%%expect{| - : string list * string list = (["a"], ["b"; "c"]) |}] (* CR-someday jdimino: ideally "b" should be treated as a non-buildable targets. As long as [rename] is not available in the DSL given to user, we don't need to care about this too much. *) infer (Progn [ Copy (p "a", p "b") ; Rename (p "b", p "c") ]);; [%%expect{| - : string list * string list = (["a"], ["b"; "c"]) |}]