Module Core_kernel.Error

This module extends the Base Error module with bin_io

include module type of sig ... end
type t = Base__Error.t
val t_of_sexp : Base__.Sexplib.Sexp.t ‑> t
val sexp_of_t : t ‑> Base__.Sexplib.Sexp.t
val compare : t ‑> t ‑> int
val to_string_hum : t ‑> string
val to_string_mach : t ‑> string
val to_string_hum_deprecated : t ‑> string
val of_string : string ‑> t
val of_lazy : string Base.Lazy.t ‑> t
val of_thunk : (unit ‑> string) ‑> t
val create : ?here:Base__.Source_code_position0.t ‑> ?strict:unit ‑> string ‑> 'a ‑> ('a ‑> Base.Sexp.t) ‑> t
val create_s : Base.Sexp.t ‑> t
val createf : ('a, unit, string, t) Pervasives.format4 ‑> 'a
val tag : t ‑> tag:string ‑> t
val tag_arg : t ‑> string ‑> 'a ‑> ('a ‑> Base.Sexp.t) ‑> t
val of_list : ?trunc_after:int ‑> t list ‑> t
val of_exn : ?backtrace:[ `Get | `This of string ] ‑> exn ‑> t
val to_exn : t ‑> exn
val pp : Caml.Format.formatter ‑> t ‑> unit
val raise : t ‑> 'a
val raise_s : Base.Sexp.t ‑> 'a
val to_info : t ‑> Base.Info.t
val of_info : Base.Info.t ‑> t
include Core_kernel__.Info_intf.Extension with type t := t
type t
include sig ... end
val bin_read_t : t Bin_prot.Read.reader
val __bin_read_t__ : (Core_kernel__.Import.int ‑> t) Bin_prot.Read.reader
val bin_reader_t : t Bin_prot.Type_class.reader
val bin_size_t : t Bin_prot.Size.sizer
val bin_write_t : t Bin_prot.Write.writer
val bin_writer_t : t Bin_prot.Type_class.writer
val bin_shape_t : Bin_prot.Shape.t
module Stable : sig ... end

Error.t is NOT wire-compatible with Error.Stable.V1.t. See info.mli for details.

val failwiths : ?strict:Core_kernel__.Import.unit ‑> ?here:Lexing.position ‑> Core_kernel__.Import.string ‑> 'a ‑> ('a ‑> Core_kernel__.Import.Sexp.t) ‑> _

     failwiths ?strict ?here message a sexp_of_a
     = Error.raise (Error.create ?strict ?here s a sexp_of_a)
   

As with Error.create, sexp_of_a a is lazily computed, when the error is converted to a sexp. So, if a is mutated in the time between the call to failwiths and the sexp conversion, those mutations will be reflected in the error message. Use ~strict:() to force sexp_of_a a to be computed immediately.

The pa_fail preprocessor replaces failwiths with failwiths ?here:[%here] so that one does not need to (and cannot) supply [%here]. pa_fail does not add ?here:[%here] to Error.failwiths.

In this signature we write ?here:Lexing.position rather than ?here:Source_code_position.t to avoid a circular dependency.

failwithp here is like failwiths ~here, except that you can provide a source position yourself (which is only interesting if you don't provide [%here]).

val failwithp : ?strict:Core_kernel__.Import.unit ‑> Lexing.position ‑> Core_kernel__.Import.string ‑> 'a ‑> ('a ‑> Core_kernel__.Import.Sexp.t) ‑> _