From 026c78ba5bce18516268b47b3bcd2c19142544dc Mon Sep 17 00:00:00 2001 From: François Pottier Date: Tue, 20 Oct 2015 21:58:03 +0200 Subject: Added [Cerrors.fatal_error_raw]. --- cparser/Cerrors.ml | 12 ++++++++++++ cparser/Cerrors.mli | 1 + 2 files changed, 13 insertions(+) diff --git a/cparser/Cerrors.ml b/cparser/Cerrors.ml index 23ec1710..5c077f37 100644 --- a/cparser/Cerrors.ml +++ b/cparser/Cerrors.ml @@ -26,6 +26,18 @@ let reset () = num_errors := 0; num_warnings := 0 exception Abort +(* [fatal_error_raw] is identical to [fatal_error], except it uses [Printf] + to print its message, as opposed to [Format], and does not automatically + introduce indentation and a final dot into the message. This is useful + for multi-line messages. *) + +let fatal_error_raw fmt = + incr num_errors; + Printf.kfprintf + (fun _ -> raise Abort) + stderr + (fmt ^^ "Fatal error; compilation aborted.\n%!") + let fatal_error fmt = incr num_errors; kfprintf diff --git a/cparser/Cerrors.mli b/cparser/Cerrors.mli index 6d34451b..3e315fad 100644 --- a/cparser/Cerrors.mli +++ b/cparser/Cerrors.mli @@ -16,6 +16,7 @@ val warn_error : bool ref val reset : unit -> unit exception Abort +val fatal_error_raw : ('a, out_channel, unit, 'b) format4 -> 'a val fatal_error : ('a, Format.formatter, unit, unit, unit, 'b) format6 -> 'a val error : ('a, Format.formatter, unit, unit, unit, unit) format6 -> 'a val warning : ('a, Format.formatter, unit, unit, unit, unit) format6 -> 'a -- cgit