(** 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 t (** The type created on-the-fly. *) end type t = | E : { module_ : (module Qsp_syntax.S.Analyzer with type Expression.t = 'a and type Expression.t' = 'b and type Instruction.t = 'c and type Instruction.t' = 'd and type Location.t = 'e and type context = 'f); expr_witness : 'a Id.t; expr' : 'b Id.t; instr_witness : 'c Id.t; instr' : 'd Id.t; location_witness : 'e Id.t; context : 'f Id.t; } -> t (** Type of check to apply *) val build : (module Qsp_syntax.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.t * t (** Build a new check from a module following S.Analyzer signature. ypeid Return the result type which hold the final result value, and checker itself. *) val get_module : t -> (module Qsp_syntax.S.Analyzer) type result val get : 'a Id.t -> 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 Qsp_syntax.S.Analyzer with type Location.t = result array end [@@warning "-67"]