Catala_utils.Message
Interface for emitting compiler messages.
All messages are expected to use the Format
module. Flush, "@?"
, "@."
, "%!"
etc. are not supposed to be used outside of this module.
WARNING: this module performs side-effects at load time, adding support for ocolor tags (e.g. "@{<blue>text@}"
) to the standard string formatter used by e.g. Format.sprintf
. (In this case, the tags are ignored, for color output you should use the functions of this module that toggle support depending on cli flags and terminal support).
module Content : sig ... end
This functions emits the message according to the emission type defined by Cli.message_format_flag
.
exception CompilerError of Content.t
exception CompilerErrors of Content.t list
type lsp_error = {
kind : lsp_error_kind;
message : Content.message;
pos : Pos.t option;
suggestion : string list option;
}
val register_lsp_error_notifier : (lsp_error -> unit) -> unit
Converts f
to a string, discarding formatting and skipping newlines and indents
Prints the given character the given number of times (assuming it is of width 1)
Creates a new formatter from the given out channel, with correct handling of the ocolor tags. Actual use of escape codes in the output depends on Cli.style_flag
-- and wether the channel is a tty if that is set to auto.
type ('a, 'b) emitter =
?header:Content.message ->
?internal:bool ->
?pos:Pos.t ->
?pos_msg:Content.message ->
?extra_pos:(string * Pos.t) list ->
?fmt_pos:(Content.message * Pos.t) list ->
?outcome:Content.message list ->
?suggestion:string list ->
('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 ->
'a
val log : ('a, unit) emitter
val debug : ('a, unit) emitter
val result : ('a, unit) emitter
val warning : ('a, unit) emitter
val error : ?kind:lsp_error_kind -> ('a, 'exn) emitter
val results : Content.message list -> unit
Multiple errors
with_delayed_errors ?stop_on_error f
calls f
and registers each error triggered using delayed_error
. stop_on_error
defaults to Global.options.stop_on_error
.
val delayed_error : ?kind:lsp_error_kind -> 'b -> ('a, 'b) emitter