diff --git a/check/classic/classic.ref b/check/classic/classic.ref index e6452e5..b673379 100644 --- a/check/classic/classic.ref +++ b/check/classic/classic.ref @@ -9,6 +9,11 @@ ./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:10: internally_used_fun_with_single_always_used_opt_arg ./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:12: internally_used_fun_with_single_sometimes_used_opt_arg +./examples/using_dune/unwrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:2: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:4: internally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected ./examples/using_dune/unwrapped_lib/values/values.mli:2: unused_int ./examples/using_dune/unwrapped_lib/values/values.mli:3: internally_used_int ./examples/using_dune/unwrapped_lib/values/values.mli:14: unused_fun @@ -29,6 +34,12 @@ ./examples/using_dune/wrapped_lib/opt_args/opt_args.mli:10: internally_used_fun_with_single_always_used_opt_arg ./examples/using_dune/wrapped_lib/opt_args/opt_args.mli:12: internally_used_fun_with_single_sometimes_used_opt_arg +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:2: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:4: internally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected ./examples/using_dune/wrapped_lib/values/values.mli:2: unused_int ./examples/using_dune/wrapped_lib/values/values.mli:3: internally_used_int ./examples/using_dune/wrapped_lib/values/values.mli:14: unused_fun @@ -533,7 +544,7 @@ Nothing else to report in this section -------------------------------------------------------------------------------- -Total: 460 +Total: 471 Success: 460 -Failed: 0 -Ratio: 100.% +Failed: 11 +Ratio: 97.6645435244% diff --git a/check/internal/internal.ref b/check/internal/internal.ref index ef171b0..9f4af00 100644 --- a/check/internal/internal.ref +++ b/check/internal/internal.ref @@ -5,6 +5,10 @@ ./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg +./examples/using_dune/unwrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:2: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected ./examples/using_dune/unwrapped_lib/values/values.mli:2: unused_int ./examples/using_dune/unwrapped_lib/values/values.mli:14: unused_fun ./examples/using_dune/unwrapped_lib/values/values.mli:20: unused_alias_fun @@ -18,6 +22,11 @@ ./examples/using_dune/wrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:2: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected ./examples/using_dune/wrapped_lib/values/values.mli:2: unused_int ./examples/using_dune/wrapped_lib/values/values.mli:14: unused_fun ./examples/using_dune/wrapped_lib/values/values.mli:20: unused_alias_fun @@ -501,7 +510,7 @@ Nothing else to report in this section -------------------------------------------------------------------------------- -Total: 430 +Total: 439 Success: 430 -Failed: 0 -Ratio: 100.% +Failed: 9 +Ratio: 97.9498861048% diff --git a/check/threshold-1/threshold-1.exp b/check/threshold-1/threshold-1.exp index 41ed3e7..8be6a91 100644 --- a/check/threshold-1/threshold-1.exp +++ b/check/threshold-1/threshold-1.exp @@ -75,7 +75,9 @@ ./examples/using_dune/bin/use_preprocessed_lib/use_preprocessed_lib.mli:1: mark_used ./examples/using_dune/bin/use_preprocessed_lib/use_preprocessed_no_intf.mli:1: mark_used +./examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_constructors.mli:1: mark_used +./examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_mixed_args.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_opt_args.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_opt_args_in_higher_order_fun.mli:1: mark_used @@ -89,7 +91,9 @@ ./examples/using_dune/bin/use_unwrapped_lib/use_with_class.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_without_class.mli:1: mark_used +./examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_constructors.mli:1: mark_used +./examples/using_dune/bin/use_wrapped_lib/use_include_modtype.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_mixed_args.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_opt_args.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_opt_args_in_higher_order_fun.mli:1: mark_used diff --git a/check/threshold-1/threshold-1.ref b/check/threshold-1/threshold-1.ref index 1ef3c2f..53531d9 100644 --- a/check/threshold-1/threshold-1.ref +++ b/check/threshold-1/threshold-1.ref @@ -5,6 +5,10 @@ ./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg +./examples/using_dune/unwrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:2: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected ./examples/using_dune/unwrapped_lib/values/values.mli:2: unused_int ./examples/using_dune/unwrapped_lib/values/values.mli:14: unused_fun ./examples/using_dune/unwrapped_lib/values/values.mli:20: unused_alias_fun @@ -18,6 +22,11 @@ ./examples/using_dune/wrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:2: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected ./examples/using_dune/wrapped_lib/values/values.mli:2: unused_int ./examples/using_dune/wrapped_lib/values/values.mli:14: unused_fun ./examples/using_dune/wrapped_lib/values/values.mli:20: unused_alias_fun @@ -75,7 +84,9 @@ ./examples/using_dune/bin/use_preprocessed_lib/use_preprocessed_lib.mli:1: mark_used ./examples/using_dune/bin/use_preprocessed_lib/use_preprocessed_no_intf.mli:1: mark_used +./examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_constructors.mli:1: mark_used +./examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_mixed_args.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_opt_args.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_opt_args_in_higher_order_fun.mli:1: mark_used @@ -89,7 +100,9 @@ ./examples/using_dune/bin/use_unwrapped_lib/use_with_class.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_without_class.mli:1: mark_used +./examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_constructors.mli:1: mark_used +./examples/using_dune/bin/use_wrapped_lib/use_include_modtype.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_mixed_args.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_opt_args.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_opt_args_in_higher_order_fun.mli:1: mark_used @@ -115,6 +128,8 @@ ./examples/using_dune/unwrapped_lib/style/style.ml:1: all +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:4: internally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:5: externally_used: Should not be detected ./examples/using_dune/unwrapped_lib/values/values.mli:3: internally_used_int ./examples/using_dune/unwrapped_lib/values/values.mli:4: externally_used_int ./examples/using_dune/unwrapped_lib/values/values.mli:5: externally_used_as_parameter_int @@ -153,6 +168,8 @@ ./examples/using_dune/wrapped_lib/style/style.ml:1: all +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:4: internally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:5: externally_used: Should not be detected ./examples/using_dune/wrapped_lib/values/values.mli:3: internally_used_int ./examples/using_dune/wrapped_lib/values/values.mli:4: externally_used_int ./examples/using_dune/wrapped_lib/values/values.mli:5: externally_used_as_parameter_int @@ -809,7 +826,7 @@ Nothing else to report in this section -------------------------------------------------------------------------------- -Total: 701 -Success: 701 -Failed: 0 -Ratio: 100.% +Total: 718 +Success: 705 +Failed: 13 +Ratio: 98.1894150418% diff --git a/check/threshold-3-0.5/threshold-3-0.5.exp b/check/threshold-3-0.5/threshold-3-0.5.exp index 49014d8..ea49a4f 100644 --- a/check/threshold-3-0.5/threshold-3-0.5.exp +++ b/check/threshold-3-0.5/threshold-3-0.5.exp @@ -75,7 +75,9 @@ ./examples/using_dune/bin/use_preprocessed_lib/use_preprocessed_lib.mli:1: mark_used ./examples/using_dune/bin/use_preprocessed_lib/use_preprocessed_no_intf.mli:1: mark_used +./examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_constructors.mli:1: mark_used +./examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_mixed_args.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_opt_args.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_opt_args_in_higher_order_fun.mli:1: mark_used @@ -89,7 +91,9 @@ ./examples/using_dune/bin/use_unwrapped_lib/use_with_class.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_without_class.mli:1: mark_used +./examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_constructors.mli:1: mark_used +./examples/using_dune/bin/use_wrapped_lib/use_include_modtype.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_mixed_args.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_opt_args.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_opt_args_in_higher_order_fun.mli:1: mark_used diff --git a/check/threshold-3-0.5/threshold-3-0.5.ref b/check/threshold-3-0.5/threshold-3-0.5.ref index 60e2afc..616e1e0 100644 --- a/check/threshold-3-0.5/threshold-3-0.5.ref +++ b/check/threshold-3-0.5/threshold-3-0.5.ref @@ -5,6 +5,10 @@ ./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg +./examples/using_dune/unwrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:2: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected ./examples/using_dune/unwrapped_lib/values/values.mli:2: unused_int ./examples/using_dune/unwrapped_lib/values/values.mli:14: unused_fun ./examples/using_dune/unwrapped_lib/values/values.mli:20: unused_alias_fun @@ -18,6 +22,11 @@ ./examples/using_dune/wrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:7: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:2: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:2: unused: Should not be detected ./examples/using_dune/wrapped_lib/values/values.mli:2: unused_int ./examples/using_dune/wrapped_lib/values/values.mli:14: unused_fun ./examples/using_dune/wrapped_lib/values/values.mli:20: unused_alias_fun @@ -75,7 +84,9 @@ ./examples/using_dune/bin/use_preprocessed_lib/use_preprocessed_lib.mli:1: mark_used ./examples/using_dune/bin/use_preprocessed_lib/use_preprocessed_no_intf.mli:1: mark_used +./examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_constructors.mli:1: mark_used +./examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_mixed_args.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_opt_args.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_opt_args_in_higher_order_fun.mli:1: mark_used @@ -89,7 +100,9 @@ ./examples/using_dune/bin/use_unwrapped_lib/use_with_class.mli:1: mark_used ./examples/using_dune/bin/use_unwrapped_lib/use_without_class.mli:1: mark_used +./examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_constructors.mli:1: mark_used +./examples/using_dune/bin/use_wrapped_lib/use_include_modtype.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_mixed_args.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_opt_args.mli:1: mark_used ./examples/using_dune/bin/use_wrapped_lib/use_opt_args_in_higher_order_fun.mli:1: mark_used @@ -115,6 +128,8 @@ ./examples/using_dune/unwrapped_lib/style/style.ml:1: all +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:4: internally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:5: externally_used: Should not be detected ./examples/using_dune/unwrapped_lib/values/values.mli:3: internally_used_int ./examples/using_dune/unwrapped_lib/values/values.mli:4: externally_used_int ./examples/using_dune/unwrapped_lib/values/values.mli:5: externally_used_as_parameter_int @@ -153,6 +168,8 @@ ./examples/using_dune/wrapped_lib/style/style.ml:1: all +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:4: internally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:5: externally_used: Should not be detected ./examples/using_dune/wrapped_lib/values/values.mli:3: internally_used_int ./examples/using_dune/wrapped_lib/values/values.mli:4: externally_used_int ./examples/using_dune/wrapped_lib/values/values.mli:5: externally_used_as_parameter_int @@ -262,6 +279,16 @@ ./examples/using_dune/unwrapped_lib/opt_args/opt_args_in_higher_order_fun.mli:13: expect_fun_with_never_used_opt_arg_with_sig ./examples/using_dune/unwrapped_lib/opt_args/opt_args_in_higher_order_fun.mli:15: expect_fun_with_always_used_opt_arg_with_sig +./examples/using_dune/unwrapped_lib/values/builder_sig_api/bsa_api.ml:9: internally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/builder_sig_api/bsa_api.ml:10: externally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/builder_sig_api/bsa_api.ml:11: sometimes_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_internal_include.mli:3: used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:4: internally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:4: internally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:5: externally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:5: externally_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:6: sometimes_used: Should not be detected +./examples/using_dune/unwrapped_lib/values/include_modtype/imt_modtype.ml:6: sometimes_used: Should not be detected ./examples/using_dune/unwrapped_lib/values/values.mli:1: used_int ./examples/using_dune/unwrapped_lib/values/values.mli:13: used_fun ./examples/using_dune/unwrapped_lib/values/values.mli:19: used_alias_fun @@ -291,6 +318,19 @@ ./examples/using_dune/wrapped_lib/opt_args/opt_args_in_higher_order_fun.mli:13: expect_fun_with_never_used_opt_arg_with_sig ./examples/using_dune/wrapped_lib/opt_args/opt_args_in_higher_order_fun.mli:15: expect_fun_with_always_used_opt_arg_with_sig +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:9: internally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:9: internally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:10: externally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:10: externally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:11: sometimes_used: Should not be detected +./examples/using_dune/wrapped_lib/values/builder_sig_api/bsa_api.ml:11: sometimes_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_internal_include.mli:3: used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:4: internally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:4: internally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:5: externally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:5: externally_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:6: sometimes_used: Should not be detected +./examples/using_dune/wrapped_lib/values/include_modtype/imt_modtype.ml:6: sometimes_used: Should not be detected ./examples/using_dune/wrapped_lib/values/values.mli:1: used_int ./examples/using_dune/wrapped_lib/values/values.mli:13: used_fun ./examples/using_dune/wrapped_lib/values/values.mli:19: used_alias_fun @@ -1168,7 +1208,7 @@ Nothing else to report in this section -------------------------------------------------------------------------------- -Total: 988 -Success: 988 -Failed: 0 -Ratio: 100.% +Total: 1028 +Success: 992 +Failed: 36 +Ratio: 96.4980544747% diff --git a/examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.ml b/examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.ml new file mode 100644 index 0000000..e595887 --- /dev/null +++ b/examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.ml @@ -0,0 +1,15 @@ +(* use Bsa *) +let () = + ignore Bsa.Parameter.used; + ignore Bsa.used; + ignore Bsa.externally_used; + ignore Bsa.sometimes_used + +(* use Bsa_less *) +let () = + ignore Bsa_use_less.used; + ignore Bsa_use_less.externally_used + +let is_used = ref false +let mark_used () = + is_used := true diff --git a/examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.mli b/examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.mli new file mode 100644 index 0000000..f84c4cb --- /dev/null +++ b/examples/using_dune/bin/use_unwrapped_lib/use_builder_sig_api.mli @@ -0,0 +1 @@ +val mark_used : unit -> unit diff --git a/examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.ml b/examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.ml new file mode 100644 index 0000000..e9d0636 --- /dev/null +++ b/examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.ml @@ -0,0 +1,19 @@ +(* use Imt_include *) +let () = + ignore Imt_include.used; + ignore Imt_include.externally_used; + ignore Imt_include.sometimes_used + +(* use Imt_include_use_less *) +let () = + ignore Imt_include_use_less.used; + ignore Imt_include_use_less.externally_used + +(* use Imt_internal_include *) +let () = + ignore Imt_internal_include.used; + ignore Imt_internal_include.externally_used + +let is_used = ref false +let mark_used () = + is_used := true diff --git a/examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.mli b/examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.mli new file mode 100644 index 0000000..f84c4cb --- /dev/null +++ b/examples/using_dune/bin/use_unwrapped_lib/use_include_modtype.mli @@ -0,0 +1 @@ +val mark_used : unit -> unit diff --git a/examples/using_dune/bin/use_unwrapped_lib/use_unwrapped_lib.ml b/examples/using_dune/bin/use_unwrapped_lib/use_unwrapped_lib.ml index 78da673..71eaf36 100644 --- a/examples/using_dune/bin/use_unwrapped_lib/use_unwrapped_lib.ml +++ b/examples/using_dune/bin/use_unwrapped_lib/use_unwrapped_lib.ml @@ -20,6 +20,12 @@ let () = let () = Use_style.mark_used () +let () = + Use_builder_sig_api.mark_used () + +let () = + Use_include_modtype.mark_used () + let is_used = ref false let mark_used () = is_used := true diff --git a/examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.ml b/examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.ml new file mode 100644 index 0000000..5a9788d --- /dev/null +++ b/examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.ml @@ -0,0 +1,17 @@ +open Wrapped_lib + +(* use Bsa *) +let () = + ignore Bsa.Parameter.used; + ignore Bsa.used; + ignore Bsa.externally_used; + ignore Bsa.sometimes_used + +(* use Bsa_less *) +let () = + ignore Bsa_use_less.used; + ignore Bsa_use_less.externally_used + +let is_used = ref false +let mark_used () = + is_used := true diff --git a/examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.mli b/examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.mli new file mode 100644 index 0000000..f84c4cb --- /dev/null +++ b/examples/using_dune/bin/use_wrapped_lib/use_builder_sig_api.mli @@ -0,0 +1 @@ +val mark_used : unit -> unit diff --git a/examples/using_dune/bin/use_wrapped_lib/use_include_modtype.ml b/examples/using_dune/bin/use_wrapped_lib/use_include_modtype.ml new file mode 100644 index 0000000..619f563 --- /dev/null +++ b/examples/using_dune/bin/use_wrapped_lib/use_include_modtype.ml @@ -0,0 +1,21 @@ +open Wrapped_lib + +(* use Imt_include *) +let () = + ignore Imt_include.used; + ignore Imt_include.externally_used; + ignore Imt_include.sometimes_used + +(* use Imt_include_use_less *) +let () = + ignore Imt_include_use_less.used; + ignore Imt_include_use_less.externally_used + +(* use Imt_internal_include *) +let () = + ignore Imt_internal_include.used; + ignore Imt_internal_include.externally_used + +let is_used = ref false +let mark_used () = + is_used := true diff --git a/examples/using_dune/bin/use_wrapped_lib/use_include_modtype.mli b/examples/using_dune/bin/use_wrapped_lib/use_include_modtype.mli new file mode 100644 index 0000000..f84c4cb --- /dev/null +++ b/examples/using_dune/bin/use_wrapped_lib/use_include_modtype.mli @@ -0,0 +1 @@ +val mark_used : unit -> unit diff --git a/examples/using_dune/bin/use_wrapped_lib/use_wrapped_lib.ml b/examples/using_dune/bin/use_wrapped_lib/use_wrapped_lib.ml index 78da673..71eaf36 100644 --- a/examples/using_dune/bin/use_wrapped_lib/use_wrapped_lib.ml +++ b/examples/using_dune/bin/use_wrapped_lib/use_wrapped_lib.ml @@ -20,6 +20,12 @@ let () = let () = Use_style.mark_used () +let () = + Use_builder_sig_api.mark_used () + +let () = + Use_include_modtype.mark_used () + let is_used = ref false let mark_used () = is_used := true diff --git a/examples/using_dune/lib/values/builder_sig_api/README.md b/examples/using_dune/lib/values/builder_sig_api/README.md new file mode 100644 index 0000000..3e73a3a --- /dev/null +++ b/examples/using_dune/lib/values/builder_sig_api/README.md @@ -0,0 +1,12 @@ +This is a pattern observed on Frama-C. + +A `module_api.ml` defines the module types, `module.ml` implements modules of +those module type and `module.mli` creates the link by exposing modules in the +implmentation with types from the api. +Additionally, there may be a `module_builder.ml` (and `.mli`) which defines +functors (in particular `Make`) using module types from the api. + +An example of this pattern can be found in the Frama-C project in +`src/kernel_services/ast_printing/` with `module = printer`. +A variation of this example, with a `module_sig.ml` for the api can be found in +`src/kernel_services/cmdline_parameters/`. This time `module = parameter` diff --git a/examples/using_dune/lib/values/builder_sig_api/bsa.ml b/examples/using_dune/lib/values/builder_sig_api/bsa.ml new file mode 100644 index 0000000..0b66306 --- /dev/null +++ b/examples/using_dune/lib/values/builder_sig_api/bsa.ml @@ -0,0 +1,12 @@ +module Parameter = struct + let used_by_functor_app = 42 + let used = 42 +end + +include Bsa_builder.Make(Parameter) + +let () = + ignore Parameter.used; + ignore used; + ignore internally_used; + ignore sometimes_used diff --git a/examples/using_dune/lib/values/builder_sig_api/bsa.mli b/examples/using_dune/lib/values/builder_sig_api/bsa.mli new file mode 100644 index 0000000..fba2d5e --- /dev/null +++ b/examples/using_dune/lib/values/builder_sig_api/bsa.mli @@ -0,0 +1,3 @@ +module Parameter : Bsa_api.PARAM + +include Bsa_api.S diff --git a/examples/using_dune/lib/values/builder_sig_api/bsa_api.ml b/examples/using_dune/lib/values/builder_sig_api/bsa_api.ml new file mode 100644 index 0000000..93db6a3 --- /dev/null +++ b/examples/using_dune/lib/values/builder_sig_api/bsa_api.ml @@ -0,0 +1,12 @@ +module type PARAM = sig + val used_by_functor_app : int + val used : int +end + +module type S = sig + val unused : int + val used : int + val internally_used :int + val externally_used :int + val sometimes_used : int +end diff --git a/examples/using_dune/lib/values/builder_sig_api/bsa_builder.ml b/examples/using_dune/lib/values/builder_sig_api/bsa_builder.ml new file mode 100644 index 0000000..090f2ca --- /dev/null +++ b/examples/using_dune/lib/values/builder_sig_api/bsa_builder.ml @@ -0,0 +1,7 @@ +module Make (P: Bsa_api.PARAM) = struct + let unused = P.used + let used = P.used + let internally_used = P.used + let externally_used = P.used + let sometimes_used = P.used +end diff --git a/examples/using_dune/lib/values/builder_sig_api/bsa_builder.mli b/examples/using_dune/lib/values/builder_sig_api/bsa_builder.mli new file mode 100644 index 0000000..1989c82 --- /dev/null +++ b/examples/using_dune/lib/values/builder_sig_api/bsa_builder.mli @@ -0,0 +1 @@ +module Make (_: Bsa_api.PARAM) : Bsa_api.S diff --git a/examples/using_dune/lib/values/builder_sig_api/bsa_use_less.ml b/examples/using_dune/lib/values/builder_sig_api/bsa_use_less.ml new file mode 100644 index 0000000..1400c25 --- /dev/null +++ b/examples/using_dune/lib/values/builder_sig_api/bsa_use_less.ml @@ -0,0 +1,8 @@ +include Bsa_builder.Make(struct + let used_by_functor_app = 42 + let used = 42 + end) + +let () = + ignore used; + ignore internally_used diff --git a/examples/using_dune/lib/values/builder_sig_api/bsa_use_less.mli b/examples/using_dune/lib/values/builder_sig_api/bsa_use_less.mli new file mode 100644 index 0000000..57a3eae --- /dev/null +++ b/examples/using_dune/lib/values/builder_sig_api/bsa_use_less.mli @@ -0,0 +1 @@ +include Bsa_api.S diff --git a/examples/using_dune/lib/values/include_modtype/imt_include.ml b/examples/using_dune/lib/values/include_modtype/imt_include.ml new file mode 100644 index 0000000..59175bd --- /dev/null +++ b/examples/using_dune/lib/values/include_modtype/imt_include.ml @@ -0,0 +1,10 @@ +let unused = 42 +let used = 42 +let internally_used = 42 +let externally_used = 42 +let sometimes_used = 42 + +let () = + ignore used; + ignore internally_used; + ignore sometimes_used diff --git a/examples/using_dune/lib/values/include_modtype/imt_include.mli b/examples/using_dune/lib/values/include_modtype/imt_include.mli new file mode 100644 index 0000000..be68770 --- /dev/null +++ b/examples/using_dune/lib/values/include_modtype/imt_include.mli @@ -0,0 +1 @@ +include Imt_modtype.S diff --git a/examples/using_dune/lib/values/include_modtype/imt_include_use_less.ml b/examples/using_dune/lib/values/include_modtype/imt_include_use_less.ml new file mode 100644 index 0000000..9c15342 --- /dev/null +++ b/examples/using_dune/lib/values/include_modtype/imt_include_use_less.ml @@ -0,0 +1,9 @@ +let unused = 42 +let used = 42 +let internally_used = 42 +let externally_used = 42 +let sometimes_used = 42 + +let () = + ignore used; + ignore internally_used diff --git a/examples/using_dune/lib/values/include_modtype/imt_include_use_less.mli b/examples/using_dune/lib/values/include_modtype/imt_include_use_less.mli new file mode 100644 index 0000000..be68770 --- /dev/null +++ b/examples/using_dune/lib/values/include_modtype/imt_include_use_less.mli @@ -0,0 +1 @@ +include Imt_modtype.S diff --git a/examples/using_dune/lib/values/include_modtype/imt_internal_include.ml b/examples/using_dune/lib/values/include_modtype/imt_internal_include.ml new file mode 100644 index 0000000..c4e88e5 --- /dev/null +++ b/examples/using_dune/lib/values/include_modtype/imt_internal_include.ml @@ -0,0 +1,17 @@ +module type S = sig + val unused : int + val used : int + val internally_used :int + val externally_used :int +end + +let unused = 42 +let used = 42 +let internally_used = 42 +let externally_used = 42 +let sometimes_used = 42 + +let () = + ignore used; + ignore internally_used; + ignore sometimes_used diff --git a/examples/using_dune/lib/values/include_modtype/imt_internal_include.mli b/examples/using_dune/lib/values/include_modtype/imt_internal_include.mli new file mode 100644 index 0000000..1b7f2c1 --- /dev/null +++ b/examples/using_dune/lib/values/include_modtype/imt_internal_include.mli @@ -0,0 +1,8 @@ +module type S = sig + val unused : int + val used : int + val internally_used :int + val externally_used :int +end + +include S diff --git a/examples/using_dune/lib/values/include_modtype/imt_modtype.ml b/examples/using_dune/lib/values/include_modtype/imt_modtype.ml new file mode 100644 index 0000000..13ea67e --- /dev/null +++ b/examples/using_dune/lib/values/include_modtype/imt_modtype.ml @@ -0,0 +1,7 @@ +module type S = sig + val unused : int + val used : int + val internally_used :int + val externally_used :int + val sometimes_used : int +end