Skip to content

Commit 8951dc5

Browse files
committed
[src][state][loc_dep][1/n] read external cm files if needed
This fixes the remaining FP/FN
1 parent 5d32cf6 commit 8951dc5

File tree

9 files changed

+90
-120
lines changed

9 files changed

+90
-120
lines changed

check/classic/classic.ref

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,11 @@
4343
./examples/using_dune/reduced_lib/reduced_lib.mli:19: Values_in_submodules.Exported.internally_used
4444
./examples/using_dune/reduced_lib/reduced_lib.mli:27: Values_in_submodules_no_intf.Exported.used_by_API
4545
./examples/using_dune/reduced_lib/reduced_lib.mli:28: Values_in_submodules_no_intf.Exported.internally_used
46-
./examples/using_dune/reduced_lib/values.mli:1: used: Should not be detected
47-
./examples/using_dune/reduced_lib/values.mli:2: used_by_API: Should not be detected
48-
./examples/using_dune/reduced_lib/values.mli:3: internally_used: Should not be detected
49-
./examples/using_dune/reduced_lib/values.mli:4: externally_used: Should not be detected
5046
./examples/using_dune/reduced_lib/values.mli:7: lib_internal_unused
5147
./examples/using_dune/reduced_lib/values.mli:8: lib_internal_internally_used
52-
./examples/using_dune/reduced_lib/values_in_submodules.mli:2: Exported.used: Should not be detected
53-
./examples/using_dune/reduced_lib/values_in_submodules.mli:3: Exported.used_by_API: Should not be detected
54-
./examples/using_dune/reduced_lib/values_in_submodules.mli:4: Exported.internally_used: Should not be detected
55-
./examples/using_dune/reduced_lib/values_in_submodules.mli:5: Exported.externally_used: Should not be detected
5648
./examples/using_dune/reduced_lib/values_in_submodules.mli:8: Exported.lib_internal_unused
5749
./examples/using_dune/reduced_lib/values_in_submodules.mli:9: Exported.lib_internal_internally_used
58-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:3: Exported.used_by_API: Should not be detected
59-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:5: Exported.externally_used: Should not be detected
6050
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:8: Exported.lib_internal_unused
61-
./examples/using_dune/reduced_lib/values_no_intf.ml:2: used_by_API: Should not be detected
62-
./examples/using_dune/reduced_lib/values_no_intf.ml:4: externally_used: Should not be detected
6351
./examples/using_dune/reduced_lib/values_no_intf.ml:11: lib_internal_unused
6452

6553
./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg
@@ -635,7 +623,7 @@ Nothing else to report in this section
635623
--------------------------------------------------------------------------------
636624

637625

638-
Total: 548
626+
Total: 536
639627
Success: 531
640-
Failed: 17
641-
Ratio: 96.897810219%
628+
Failed: 5
629+
Ratio: 99.0671641791%

check/internal/internal.ref

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,9 @@
3131
./examples/using_dune/reduced_lib/reduced_lib.mli:19: Values_in_submodules.Exported.internally_used
3232
./examples/using_dune/reduced_lib/reduced_lib.mli:27: Values_in_submodules_no_intf.Exported.used_by_API
3333
./examples/using_dune/reduced_lib/reduced_lib.mli:28: Values_in_submodules_no_intf.Exported.internally_used
34-
./examples/using_dune/reduced_lib/values.mli:2: used_by_API: Should not be detected
35-
./examples/using_dune/reduced_lib/values.mli:4: externally_used: Should not be detected
3634
./examples/using_dune/reduced_lib/values.mli:7: lib_internal_unused
37-
./examples/using_dune/reduced_lib/values_in_submodules.mli:3: Exported.used_by_API: Should not be detected
38-
./examples/using_dune/reduced_lib/values_in_submodules.mli:5: Exported.externally_used: Should not be detected
3935
./examples/using_dune/reduced_lib/values_in_submodules.mli:8: Exported.lib_internal_unused
40-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:3: Exported.used_by_API: Should not be detected
41-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:5: Exported.externally_used: Should not be detected
4236
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:8: Exported.lib_internal_unused
43-
./examples/using_dune/reduced_lib/values_no_intf.ml:2: used_by_API: Should not be detected
44-
./examples/using_dune/reduced_lib/values_no_intf.ml:4: externally_used: Should not be detected
4537
./examples/using_dune/reduced_lib/values_no_intf.ml:11: lib_internal_unused
4638

4739
./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg
@@ -586,7 +578,7 @@ Nothing else to report in this section
586578
--------------------------------------------------------------------------------
587579

588580

589-
Total: 502
581+
Total: 494
590582
Success: 489
591-
Failed: 13
592-
Ratio: 97.4103585657%
583+
Failed: 5
584+
Ratio: 98.987854251%

check/threshold-1/threshold-1.ref

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,9 @@
3131
./examples/using_dune/reduced_lib/reduced_lib.mli:19: Values_in_submodules.Exported.internally_used
3232
./examples/using_dune/reduced_lib/reduced_lib.mli:27: Values_in_submodules_no_intf.Exported.used_by_API
3333
./examples/using_dune/reduced_lib/reduced_lib.mli:28: Values_in_submodules_no_intf.Exported.internally_used
34-
./examples/using_dune/reduced_lib/values.mli:2: used_by_API: Should not be detected
35-
./examples/using_dune/reduced_lib/values.mli:4: externally_used: Should not be detected
3634
./examples/using_dune/reduced_lib/values.mli:7: lib_internal_unused
37-
./examples/using_dune/reduced_lib/values_in_submodules.mli:3: Exported.used_by_API: Should not be detected
38-
./examples/using_dune/reduced_lib/values_in_submodules.mli:5: Exported.externally_used: Should not be detected
3935
./examples/using_dune/reduced_lib/values_in_submodules.mli:8: Exported.lib_internal_unused
40-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:3: Exported.used_by_API: Should not be detected
41-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:5: Exported.externally_used: Should not be detected
4236
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:8: Exported.lib_internal_unused
43-
./examples/using_dune/reduced_lib/values_no_intf.ml:2: used_by_API: Should not be detected
44-
./examples/using_dune/reduced_lib/values_no_intf.ml:4: externally_used: Should not be detected
4537
./examples/using_dune/reduced_lib/values_no_intf.ml:11: lib_internal_unused
4638

4739
./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg
@@ -201,28 +193,20 @@
201193
./examples/using_dune/reduced_lib/reduced_lib.mli:20: Values_in_submodules.Exported.externally_used
202194
./examples/using_dune/reduced_lib/reduced_lib.mli:26: Values_in_submodules_no_intf.Exported.used
203195
./examples/using_dune/reduced_lib/reduced_lib.mli:29: Values_in_submodules_no_intf.Exported.externally_used
204-
./examples/using_dune/reduced_lib/values.mli:1: used: Should not be detected
205-
./examples/using_dune/reduced_lib/values.mli:2: used_by_API: Not detected
206-
./examples/using_dune/reduced_lib/values.mli:3: internally_used: Should not be detected
207-
./examples/using_dune/reduced_lib/values.mli:4: externally_used: Not detected
196+
./examples/using_dune/reduced_lib/values.mli:2: used_by_API
197+
./examples/using_dune/reduced_lib/values.mli:4: externally_used
208198
./examples/using_dune/reduced_lib/values.mli:8: lib_internal_internally_used
209199
./examples/using_dune/reduced_lib/values.mli:9: lib_internal_externally_used
210-
./examples/using_dune/reduced_lib/values_in_submodules.mli:2: Exported.used: Should not be detected
211-
./examples/using_dune/reduced_lib/values_in_submodules.mli:3: Exported.used_by_API: Not detected
212-
./examples/using_dune/reduced_lib/values_in_submodules.mli:4: Exported.internally_used: Should not be detected
213-
./examples/using_dune/reduced_lib/values_in_submodules.mli:5: Exported.externally_used: Not detected
200+
./examples/using_dune/reduced_lib/values_in_submodules.mli:3: Exported.used_by_API
201+
./examples/using_dune/reduced_lib/values_in_submodules.mli:5: Exported.externally_used
214202
./examples/using_dune/reduced_lib/values_in_submodules.mli:9: Exported.lib_internal_internally_used
215203
./examples/using_dune/reduced_lib/values_in_submodules.mli:10: Exported.lib_internal_externally_used
216-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:2: Exported.used: Should not be detected
217-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:3: Exported.used_by_API: Not detected
218-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:4: Exported.internally_used: Should not be detected
219-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:5: Exported.externally_used: Not detected
204+
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:3: Exported.used_by_API
205+
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:5: Exported.externally_used
220206
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:9: Exported.lib_internal_internally_used
221207
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:10: Exported.lib_internal_externally_used
222-
./examples/using_dune/reduced_lib/values_no_intf.ml:1: used: Should not be detected
223-
./examples/using_dune/reduced_lib/values_no_intf.ml:2: used_by_API: Not detected
224-
./examples/using_dune/reduced_lib/values_no_intf.ml:3: internally_used: Should not be detected
225-
./examples/using_dune/reduced_lib/values_no_intf.ml:4: externally_used: Not detected
208+
./examples/using_dune/reduced_lib/values_no_intf.ml:2: used_by_API
209+
./examples/using_dune/reduced_lib/values_no_intf.ml:4: externally_used
226210
./examples/using_dune/reduced_lib/values_no_intf.ml:12: lib_internal_internally_used
227211
./examples/using_dune/reduced_lib/values_no_intf.ml:13: lib_internal_externally_used
228212

@@ -971,7 +955,7 @@ Nothing else to report in this section
971955
--------------------------------------------------------------------------------
972956

973957

974-
Total: 841
975-
Success: 812
976-
Failed: 29
977-
Ratio: 96.5517241379%
958+
Total: 825
959+
Success: 820
960+
Failed: 5
961+
Ratio: 99.3939393939%

check/threshold-3-0.5/threshold-3-0.5.ref

Lines changed: 20 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,9 @@
3131
./examples/using_dune/reduced_lib/reduced_lib.mli:19: Values_in_submodules.Exported.internally_used
3232
./examples/using_dune/reduced_lib/reduced_lib.mli:27: Values_in_submodules_no_intf.Exported.used_by_API
3333
./examples/using_dune/reduced_lib/reduced_lib.mli:28: Values_in_submodules_no_intf.Exported.internally_used
34-
./examples/using_dune/reduced_lib/values.mli:2: used_by_API: Should not be detected
35-
./examples/using_dune/reduced_lib/values.mli:4: externally_used: Should not be detected
3634
./examples/using_dune/reduced_lib/values.mli:7: lib_internal_unused
37-
./examples/using_dune/reduced_lib/values_in_submodules.mli:3: Exported.used_by_API: Should not be detected
38-
./examples/using_dune/reduced_lib/values_in_submodules.mli:5: Exported.externally_used: Should not be detected
3935
./examples/using_dune/reduced_lib/values_in_submodules.mli:8: Exported.lib_internal_unused
40-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:3: Exported.used_by_API: Should not be detected
41-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:5: Exported.externally_used: Should not be detected
4236
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:8: Exported.lib_internal_unused
43-
./examples/using_dune/reduced_lib/values_no_intf.ml:2: used_by_API: Should not be detected
44-
./examples/using_dune/reduced_lib/values_no_intf.ml:4: externally_used: Should not be detected
4537
./examples/using_dune/reduced_lib/values_no_intf.ml:11: lib_internal_unused
4638

4739
./examples/using_dune/unwrapped_lib/opt_args/opt_args.mli:1: unused_fun_with_single_never_used_opt_arg
@@ -201,28 +193,20 @@
201193
./examples/using_dune/reduced_lib/reduced_lib.mli:20: Values_in_submodules.Exported.externally_used
202194
./examples/using_dune/reduced_lib/reduced_lib.mli:26: Values_in_submodules_no_intf.Exported.used
203195
./examples/using_dune/reduced_lib/reduced_lib.mli:29: Values_in_submodules_no_intf.Exported.externally_used
204-
./examples/using_dune/reduced_lib/values.mli:1: used: Should not be detected
205-
./examples/using_dune/reduced_lib/values.mli:2: used_by_API: Not detected
206-
./examples/using_dune/reduced_lib/values.mli:3: internally_used: Should not be detected
207-
./examples/using_dune/reduced_lib/values.mli:4: externally_used: Not detected
196+
./examples/using_dune/reduced_lib/values.mli:2: used_by_API
197+
./examples/using_dune/reduced_lib/values.mli:4: externally_used
208198
./examples/using_dune/reduced_lib/values.mli:8: lib_internal_internally_used
209199
./examples/using_dune/reduced_lib/values.mli:9: lib_internal_externally_used
210-
./examples/using_dune/reduced_lib/values_in_submodules.mli:2: Exported.used: Should not be detected
211-
./examples/using_dune/reduced_lib/values_in_submodules.mli:3: Exported.used_by_API: Not detected
212-
./examples/using_dune/reduced_lib/values_in_submodules.mli:4: Exported.internally_used: Should not be detected
213-
./examples/using_dune/reduced_lib/values_in_submodules.mli:5: Exported.externally_used: Not detected
200+
./examples/using_dune/reduced_lib/values_in_submodules.mli:3: Exported.used_by_API
201+
./examples/using_dune/reduced_lib/values_in_submodules.mli:5: Exported.externally_used
214202
./examples/using_dune/reduced_lib/values_in_submodules.mli:9: Exported.lib_internal_internally_used
215203
./examples/using_dune/reduced_lib/values_in_submodules.mli:10: Exported.lib_internal_externally_used
216-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:2: Exported.used: Should not be detected
217-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:3: Exported.used_by_API: Not detected
218-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:4: Exported.internally_used: Should not be detected
219-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:5: Exported.externally_used: Not detected
204+
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:3: Exported.used_by_API
205+
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:5: Exported.externally_used
220206
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:9: Exported.lib_internal_internally_used
221207
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:10: Exported.lib_internal_externally_used
222-
./examples/using_dune/reduced_lib/values_no_intf.ml:1: used: Should not be detected
223-
./examples/using_dune/reduced_lib/values_no_intf.ml:2: used_by_API: Not detected
224-
./examples/using_dune/reduced_lib/values_no_intf.ml:3: internally_used: Should not be detected
225-
./examples/using_dune/reduced_lib/values_no_intf.ml:4: externally_used: Not detected
208+
./examples/using_dune/reduced_lib/values_no_intf.ml:2: used_by_API
209+
./examples/using_dune/reduced_lib/values_no_intf.ml:4: externally_used
226210
./examples/using_dune/reduced_lib/values_no_intf.ml:12: lib_internal_internally_used
227211
./examples/using_dune/reduced_lib/values_no_intf.ml:13: lib_internal_externally_used
228212

@@ -370,17 +354,17 @@
370354
./examples/using_dune/preprocessed_lib/preprocessed_no_intf.ml:59: internally_used_f
371355
./examples/using_dune/preprocessed_lib/preprocessed_no_intf.ml:64: externally_used_f
372356

373-
./examples/using_dune/reduced_lib/values.mli:1: used: Not detected
374-
./examples/using_dune/reduced_lib/values.mli:3: internally_used: Not detected
357+
./examples/using_dune/reduced_lib/values.mli:1: used
358+
./examples/using_dune/reduced_lib/values.mli:3: internally_used
375359
./examples/using_dune/reduced_lib/values.mli:6: lib_internal_used
376-
./examples/using_dune/reduced_lib/values_in_submodules.mli:2: Exported.used: Not detected
377-
./examples/using_dune/reduced_lib/values_in_submodules.mli:4: Exported.internally_used: Not detected
360+
./examples/using_dune/reduced_lib/values_in_submodules.mli:2: Exported.used
361+
./examples/using_dune/reduced_lib/values_in_submodules.mli:4: Exported.internally_used
378362
./examples/using_dune/reduced_lib/values_in_submodules.mli:7: Exported.lib_internal_used
379-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:2: Exported.used: Not detected
380-
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:4: Exported.internally_used: Not detected
363+
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:2: Exported.used
364+
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:4: Exported.internally_used
381365
./examples/using_dune/reduced_lib/values_in_submodules_no_intf.ml:7: Exported.lib_internal_used
382-
./examples/using_dune/reduced_lib/values_no_intf.ml:1: used: Not detected
383-
./examples/using_dune/reduced_lib/values_no_intf.ml:3: internally_used: Not detected
366+
./examples/using_dune/reduced_lib/values_no_intf.ml:1: used
367+
./examples/using_dune/reduced_lib/values_no_intf.ml:3: internally_used
384368
./examples/using_dune/reduced_lib/values_no_intf.ml:10: lib_internal_used
385369

386370
./examples/using_dune/unwrapped_lib/obj/with_class.mli:33: fun_class_factory
@@ -1356,7 +1340,7 @@ Nothing else to report in this section
13561340
--------------------------------------------------------------------------------
13571341

13581342

1359-
Total: 1153
1360-
Success: 1116
1361-
Failed: 37
1362-
Ratio: 96.790980052%
1343+
Total: 1137
1344+
Success: 1132
1345+
Failed: 5
1346+
Ratio: 99.5602462621%

src/state/file_infos.ml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ let init_from_cmti_file cmti_file =
6464
let cmti_uid_to_decl = Some cmt_infos.cmt_uid_to_decl in
6565
{file_infos with cmti_uid_to_decl}
6666

67-
let init_from_cmt_file cmt_file =
67+
let init_from_cmt_file ~cm_paths cmt_file =
6868
let* file_infos, cmt_infos = init_from_cm_file cmt_file in
6969
let* cmt_struct =
7070
match cmt_infos.cmt_annots with
@@ -82,26 +82,26 @@ let init_from_cmt_file cmt_file =
8282
| Ok file_infos -> file_infos.cmti_uid_to_decl
8383
in
8484
let+ location_dependencies =
85-
Location_dependencies.init cmt_infos cmti_uid_to_decl
85+
Location_dependencies.init ~cm_paths cmt_infos cmti_uid_to_decl
8686
in
8787
let file_infos =
8888
{file_infos with cmt_struct; cmti_uid_to_decl; location_dependencies}
8989
in
9090
file_infos, cmt_infos
9191

92-
let init cm_file =
92+
let init ~cm_paths cm_file =
9393
match Filename.extension cm_file with
9494
| ".cmt" ->
95-
let+ file_infos, _ = init_from_cmt_file cm_file in
95+
let+ file_infos, _ = init_from_cmt_file ~cm_paths cm_file in
9696
file_infos
9797
| ".cmti" -> (
9898
(* Using cmt_infos is not critical. The intent is to mirror the behavior
9999
on cmt files, where both cmt and cmti are read. *)
100100
let filled_with_cmt_infos =
101101
let cmt_file = Filename.remove_extension cm_file ^ ".cmt" in
102-
let* file_infos, cmt_infos = init_from_cmt_file cmt_file in
102+
let* file_infos, cmt_infos = init_from_cmt_file ~cm_paths cmt_file in
103103
let+ location_dependencies =
104-
Location_dependencies.init cmt_infos file_infos.cmti_uid_to_decl
104+
Location_dependencies.init ~cm_paths cmt_infos file_infos.cmti_uid_to_decl
105105
in
106106
{file_infos with location_dependencies}
107107
in
@@ -113,15 +113,15 @@ let init cm_file =
113113
)
114114
| _ -> Result.error (cm_file ^ ": not a .cmti or .cmt file")
115115

116-
let change_file file_infos cm_file =
116+
let change_file ~cm_paths file_infos cm_file =
117117
let no_ext = Filename.remove_extension cm_file in
118118
assert(no_ext = Filename.remove_extension file_infos.cm_file);
119119
match Filename.extension cm_file, file_infos with
120120
| ".cmt", {cmt_struct = (Some _ as cs); cmi_sign; cmti_uid_to_decl; _} ->
121121
let* res, cmt_infos = init_from_cm_file cm_file in
122122
let+ location_dependencies =
123123
match file_infos.location_dependencies with
124-
| [] -> Location_dependencies.init cmt_infos cmti_uid_to_decl
124+
| [] -> Location_dependencies.init ~cm_paths cmt_infos cmti_uid_to_decl
125125
| loc_dep -> (* They have already been computed *)
126126
Result.ok loc_dep
127127
in
@@ -131,7 +131,7 @@ let change_file file_infos cm_file =
131131
{res with cmti_uid_to_decl = cutd; cmt_struct; location_dependencies}
132132
| _ ->
133133
(* invalid extension or the corresponding info is None *)
134-
init cm_file
134+
init ~cm_paths cm_file
135135

136136
let has_sourcepath file_infos = Option.is_some file_infos.sourcepath
137137

src/state/file_infos.mli

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,22 @@ type t = {
1616

1717
val empty : t (** No file info *)
1818

19-
val init : string -> (t, string) result
19+
val init : cm_paths: Utils.StringSet.t -> string -> (t, string) result
2020
(** [init cm_file] expects either a [.cmti] or [.cmt] filepath as argument and
2121
returns an [Ok t] with [t] filled using the [cmtit_file].
2222
In case the file does not exist, it cannot be read, or its extension is
2323
invalid, then it returns an [Err msg] with msg a string
24-
describing the issue. *)
24+
describing the issue.
25+
[cm_paths] is used to load external cm files if necessary. *)
2526

26-
val change_file : t -> string -> (t, string) result
27+
val change_file : cm_paths: Utils.StringSet.t -> t -> string -> (t, string) result
2728
(** [change_file t cm_file] expects either a [.cmti] or a [.cmt] filepath as
2829
argument. [cm_file] must be the same as [t.cm_file], ignoring the
2930
extension.
3031
The returned value is either a simple update of [t] if the necessary
3132
[cmti_infos] or [cmt_infos] is available. Otherwise, it is the result of
32-
[init t] *)
33+
[init t].
34+
[cm_paths] is used to load external cm files if necessary. *)
3335

3436
val has_sourcepath : t -> bool
3537

0 commit comments

Comments
 (0)