Skip to content

Commit 4bbd3c2

Browse files
committed
fix package requires order
Signed-off-by: ArthurW <arthur@tarides.com>
1 parent 27e034e commit 4bbd3c2

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

src/dune_rules/lib.ml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1285,9 +1285,12 @@ end = struct
12851285
"expected Virtual or Parameter"
12861286
[ "implements", to_dyn impl ])
12871287
in
1288-
List.concat [ requires_implements; requires_params; requires ]
1289-
|> Set.of_list
1290-
|> Set.to_list
1288+
let requires = List.concat [ requires_implements; requires_params; requires ] in
1289+
let _, requires =
1290+
List.fold_left requires ~init:(Set.empty, []) ~f:(fun (seen, lst) lib ->
1291+
if Set.mem seen lib then seen, lst else Set.add seen lib, lib :: lst)
1292+
in
1293+
List.rev requires
12911294
in
12921295
let resolve_impl impl_name =
12931296
let open Resolve.Memo.O in

test/blackbox-tests/test-cases/oxcaml/instantiate-parameterised.t

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,7 @@ The `dune-package` should list the different instantiations in the dependencies:
658658
(archives (byte lib_ab/lib_ab.cma) (native lib_ab/lib_ab.cmxa))
659659
(plugins (byte lib_ab/lib_ab.cma) (native lib_ab/lib_ab.cmxs))
660660
(native_archives lib_ab/lib_ab.a)
661-
(requires project.a (project.a_of_b) project.b)
661+
(requires project.a project.b (project.a_of_b))
662662
(parameters project.a project.b)
663663
(main_module_name Lib_ab)
664664
(modes byte native)
@@ -674,12 +674,12 @@ The `dune-package` should list the different instantiations in the dependencies:
674674
(plugins (byte lib_apply/lib_apply.cma) (native lib_apply/lib_apply.cmxs))
675675
(native_archives lib_apply/lib_apply.a)
676676
(requires
677-
project.a_impl
678-
(project.a_of_b)
679677
project.b
680-
project.b_impl
678+
project.a_impl
681679
(project.lib_ab project.a_impl)
680+
project.b_impl
682681
(project.lib_ab project.a_impl project.b_impl)
682+
(project.a_of_b)
683683
(project.lib_ab project.a_of_b)
684684
(project.lib_ab project.a_of_b project.b_impl))
685685
(parameters project.b)

0 commit comments

Comments
 (0)