open Ident exception NonExhaustive of Types.descr exception Constraint of Types.descr * Types.descr exception ShouldHave of Types.descr * string exception WrongLabel of Types.descr * label exception UnboundId of id exception ShouldHave2 of Types.descr * string * Types.descr exception Error of string val warning: Location.loc -> string -> unit val error: Location.loc -> string -> 'a val register_global_types : (U.t * Ast.ppat) list -> unit val dump_global_types: Format.formatter -> unit val register_ns_prefix : U.t -> Atoms.Ns.t -> unit val typ : Ast.ppat -> Typed.ttyp val pat : Ast.ppat -> Typed.tpat val expr: Ast.pexpr -> fv * Typed.texpr val let_decl : Ast.ppat -> Ast.pexpr -> Typed.let_decl type env = Types.descr Env.t val type_check: env -> Typed.texpr -> Types.descr -> bool -> Types.descr (* [type_check env e t precise] checks that expression [e] has type [t] under typing environment [env]; if [precise=true], also returns a possible more precise type for [e]. *) val type_let_decl: env -> Typed.let_decl -> (id * Types.descr) list val type_rec_funs: env -> Typed.texpr list -> (id * Types.descr) list (* Assume that all the expressions are Abstractions *) val report_unused_branches : unit -> unit (* Issue warnings for unused branches *) val flatten: Location.loc -> (Types.descr -> bool -> Types.descr) -> (Types.descr -> bool -> Types.descr) (** {2 Schema stuff} *) (** register a schema *) val register_schema: string -> Schema_types.schema -> unit (** @return the validator for a Schema global element *) val get_schema_validator: string * string -> Schema_validator.validator (** DEBUG ONLY *) (* return the type of a global schema element *) val get_schema_type: string * string -> Types.descr