Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file info_intf.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153(** [Info] is a library for lazily constructing human-readable information as a string
or sexp, with a primary use being error messages.
Using [Info] is often preferable to [sprintf] or manually constructing strings
because you don't have to eagerly construct the string -- you only need to pay when
you actually want to display the info, which for many applications is rare. Using
[Info] is also better than creating custom exceptions because you have more control
over the format.
Info is intended to be constructed in the following style; for simple info, you
write:
{[Info.of_string "Unable to find file"]}
Or for a more descriptive [Info] without attaching any content (but evaluating the
result eagerly):
{[Info.createf "Process %s exited with code %d" process exit_code]}
For info where you want to attach some content, you would write:
{[Info.create "Unable to find file" filename [%sexp_of: string]]}
Or even,
{[
Info.create "price too big" (price, [`Max max_price])
[%sexp_of: float * [`Max of float]]
]}
Note that an [Info.t] can be created from any arbitrary sexp with [Info.t_of_sexp].
*)open!ImportmoduletypeS=sig(** Serialization and comparison force the lazy message. *)typet[@@deriving_inlinecompare,equal,hash,sexp]includesig[@@@ocaml.warning"-32"]valcompare:t->t->intvalequal:t->t->boolvalhash_fold_t:Ppx_hash_lib.Std.Hash.state->t->Ppx_hash_lib.Std.Hash.statevalhash:t->Ppx_hash_lib.Std.Hash.hash_valueincludePpx_sexp_conv_lib.Sexpable.Swithtypet:=tend[@@ocaml.doc"@inline"][@@@end]includeInvariant_intf.Swithtypet:=t(** [to_string_hum] forces the lazy message, which might be an expensive operation.
[to_string_hum] usually produces a sexp; however, it is guaranteed that
[to_string_hum (of_string s) = s].
If this string is going to go into a log file, you may find it useful to ensure that
the string is only one line long. To do this, use [to_string_mach t]. *)valto_string_hum:t->string(** [to_string_mach t] outputs [t] as a sexp on a single line. *)valto_string_mach:t->string(** Old version (pre 109.61) of [to_string_hum] that some applications rely on.
Calls should be replaced with [to_string_mach t], which outputs more parentheses and
backslashes. *)valto_string_hum_deprecated:t->stringvalof_string:string->t(** Be careful that the body of the lazy or thunk does not access mutable data, since it
will only be called at an undetermined later point. *)valof_lazy:stringLazy.t->tvalof_thunk:(unit->string)->tvalof_lazy_t:tLazy.t->t(** For [create message a sexp_of_a], [sexp_of_a a] is lazily computed, when the info is
converted to a sexp. So if [a] is mutated in the time between the call to [create]
and the sexp conversion, those mutations will be reflected in the sexp. Use
[~strict:()] to force [sexp_of_a a] to be computed immediately. *)valcreate:?here:Source_code_position0.t->?strict:unit->string->'a->('a->Sexp.t)->tvalcreate_s:Sexp.t->t(** Constructs a [t] containing only a string from a format. This eagerly constructs
the string. *)valcreatef:('a,unit,string,t)format4->'a(** Adds a string to the front. *)valtag:t->tag:string->t(** Adds a sexp to the front. *)valtag_s:t->tag:Sexp.t->t(** Adds a string and some other data in the form of an s-expression at the front. *)valtag_arg:t->string->'a->('a->Sexp.t)->t(** Combines multiple infos into one. *)valof_list:?trunc_after:int->tlist->t(** [of_exn] and [to_exn] are primarily used with [Error], but their definitions have to
be here because they refer to the underlying representation.
[~backtrace:`Get] attaches the backtrace for the most recent exception. The same
caveats as for [Printexc.print_backtrace] apply. [~backtrace:(`This s)] attaches
the backtrace [s]. The default is no backtrace. *)valof_exn:?backtrace:[`Get|`Thisofstring]->exn->tvalto_exn:t->exnvalpp:Formatter.t->t->unitmoduleInternal_repr:sigtypeinfo=t(** The internal representation. It is exposed so that we can write efficient
serializers outside of this module. *)typet=|Could_not_constructofSexp.t|Stringofstring|Exnofexn|SexpofSexp.t|Tag_sexpofstring*Sexp.t*Source_code_position0.toption|Tag_tofstring*t|Tag_argofstring*Sexp.t*t|Of_listofintoption*tlist|With_backtraceoft*string(** The second argument is the backtrace *)[@@deriving_inlinesexp_of]includesig[@@@ocaml.warning"-32"]valsexp_of_t:t->Ppx_sexp_conv_lib.Sexp.tend[@@ocaml.doc"@inline"][@@@end]valof_info:info->tvalto_info:t->infoendwithtypeinfo:=tendmoduletypeInfo=sigmoduletypeS=SincludeSend