(** This module is a meta-checker. It will take many checkers and aggregate their result together before providing an unified result. The modules required to be declared before being used, using the [build] method, and provided as an array : {[ let _, e1 = build (module …) let _, e2 = build (module …) module Check = Make (struct let t = [| e1; e2 |] end) ]} *) module Id : sig type 'a typeid (** The type created on-the-fly. *) end type t (** Type of check to apply *) val build : (module S.Analyzer with type Expression.t = _ and type Expression.t' = _ and type Instruction.t = _ and type Instruction.t' = _ and type Location.t = 'a and type context = _) -> 'a Id.typeid * t (** Build a new check from a module following S.Analyzer signature. Return the result type which hold the final result value, and checker itself. *) val get_module : t -> (module S.Analyzer) type result val get : 'a Id.typeid -> result -> 'a option (** The method [get] can be used to get the internal value for one of the checker used. *) module Make (A : sig val t : t array end) : sig include S.Analyzer with type Location.t = result array end [@@warning "-67"]