module Linkdeps:sig
..end
type
t
The state of the linking check. It keeps track of compilation units provided and required so far.
typecompunit =
string
typefilename =
string
val create : complete:bool -> t
create ~complete
returns an empty state. If complete
is
true
, missing compilation units will be treated as errors.
val add : t ->
filename:filename ->
compunit:compunit ->
provides:compunit list -> requires:compunit list -> unit
add t ~filename ~compunit ~provides ~requires
registers the
compilation unit compunit
found in filename
to t
.
provides
are units and sub-units provided by compunit
requires
are units required by compunit
add
should be called in reverse topological order.
val required : t -> compunit -> bool
required t compunit
returns true
if compunit
is a dependency of
previously added compilation units.
type
compunit_and_source = {
|
compunit : |
|
filename : |
}
type
error =
| |
Missing_implementations of |
| |
Wrong_link_order of |
| |
Multiple_definitions of |
val check : t -> error option
check t
should be called once all the compilation units to be linked
have been added. It returns some error if:
complete
is true
val report_error : print_filename:(Format.formatter -> string -> unit) ->
Format.formatter -> error -> unit