Module Cduce_lib.Typer

type t
exception NonExhaustive of Cduce_types.Types.descr
exception Constraint of Cduce_types.Types.descr * Cduce_types.Types.descr
exception ShouldHave of Cduce_types.Types.descr * string
exception WrongLabel of Cduce_types.Types.descr * Cduce_types.Ident.label
exception UnboundId of Cduce_types.Ident.id * bool
exception UnboundExtId of Cduce_types.Compunit.t * Cduce_types.Ident.id
exception ShouldHave2 of Cduce_types.Types.descr * string * Cduce_types.Types.descr
exception Error of string
exception Warning of string * Cduce_types.Types.t
val empty_env : t
val register_types : string -> t -> unit
val find_value : Cduce_types.Ident.id -> t -> Cduce_types.Types.t
val enter_type : Cduce_types.Ident.id -> (Cduce_types.Types.t * Cduce_types.Var.t list) -> t -> t
val iter_values : t -> (Cduce_types.Ident.id -> Cduce_types.Types.t -> unit) -> unit
val typ : t -> Cduce_core.Ast.ppat -> Cduce_types.Types.Node.t
val var_typ : (Encodings.Utf8.t * Cduce_types.Var.t) list -> t -> Cduce_core.Ast.ppat -> Cduce_types.Types.Node.t
val pat : t -> Cduce_core.Ast.ppat -> Cduce_core.Patterns.node
val dump_types : Stdlib.Format.formatter -> t -> unit
val dump_ns : Stdlib.Format.formatter -> t -> unit
val set_ns_table_for_printer : t -> unit
val type_using : t -> Cduce_core.Cduce_loc.loc -> Encodings.Utf8.t -> Encodings.Utf8.t -> t
val type_schema : t -> Cduce_core.Cduce_loc.loc -> Encodings.Utf8.t -> string -> t
val type_ns : t -> Cduce_core.Cduce_loc.loc -> Encodings.Utf8.t -> Cduce_core.Ast.ns_expr -> t
val type_open : t -> Cduce_core.Cduce_loc.loc -> Encodings.Utf8.t list -> t
val type_keep_ns : t -> bool -> t
val type_expr : t -> Cduce_core.Ast.pexpr -> t * Cduce_core.Typed.texpr * Cduce_types.Types.descr
val type_defs : t -> (Cduce_core.Cduce_loc.loc * Encodings.Utf8.t * Encodings.Utf8.t list * Cduce_core.Ast.ppat) list -> t
val type_let_decl : t -> Cduce_core.Ast.ppat -> Cduce_core.Ast.pexpr -> t * Cduce_core.Typed.let_decl * (Cduce_types.Ident.id * Cduce_types.Types.t) list
val type_let_funs : t -> Cduce_core.Ast.pexpr list -> t * Cduce_core.Typed.texpr list * (Cduce_types.Ident.id * Cduce_types.Types.t) list
val check_weak_variables : t -> unit
type type_fun = Cduce_types.Types.t -> bool -> Cduce_types.Types.t
val register_op : string -> int -> (type_fun list -> type_fun) -> unit
val flatten : type_fun -> type_fun
val from_comp_unit : (Cduce_types.Compunit.t -> t) Stdlib.ref
val load_comp_unit : (Encodings.Utf8.t -> Cduce_types.Compunit.t) Stdlib.ref
val has_ocaml_unit : (Encodings.Utf8.t -> bool) Stdlib.ref
val has_static_external : (string -> bool) Stdlib.ref