Linkdeps(3o)

NAME
Linkdeps - no description

Module
Module Linkdeps

Documentation

Module Linkdeps
 : sig end

type t

The state of the linking check. It keeps track of compilation units provided and required so far.

type compunit = string

type filename = 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 : compunit ;
 filename : filename ;
 }

type error =
 | Missing_implementations of (compunit * compunit_and_source list) list
 | Wrong_link_order of (compunit_and_source * compunit_and_source list) list
 | Multiple_definitions of (compunit * filename list) list

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:

-There are some missing implementations and complete is true

-Some implementation appear before their dependencies

val report_error : print_filename:string Format_doc.printer -> error Format_doc.format_printer

val report_error_doc : print_filename:string Format_doc.printer -> error Format_doc.printer