From 891377ce1962cdb31357d6580d6546ec22df2b4f Mon Sep 17 00:00:00 2001 From: xleroy Date: Wed, 3 Mar 2010 10:22:27 +0000 Subject: Switching to the new C parser/elaborator/simplifier git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1269 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- cparser/Errors.ml | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 cparser/Errors.ml (limited to 'cparser/Errors.ml') diff --git a/cparser/Errors.ml b/cparser/Errors.ml new file mode 100644 index 00000000..188531e7 --- /dev/null +++ b/cparser/Errors.ml @@ -0,0 +1,55 @@ +(* *********************************************************************) +(* *) +(* The Compcert verified compiler *) +(* *) +(* Xavier Leroy, INRIA Paris-Rocquencourt *) +(* *) +(* Copyright Institut National de Recherche en Informatique et en *) +(* Automatique. All rights reserved. This file is distributed *) +(* under the terms of the GNU General Public License as published by *) +(* the Free Software Foundation, either version 2 of the License, or *) +(* (at your option) any later version. This file is also distributed *) +(* under the terms of the INRIA Non-Commercial License Agreement. *) +(* *) +(* *********************************************************************) + +(* Management of errors and warnings *) + +open Format + +let warn_error = ref false + +let num_errors = ref 0 +let num_warnings = ref 0 + +let reset () = num_errors := 0; num_warnings := 0 + +exception Abort + +let fatal_error fmt = + incr num_errors; + kfprintf + (fun _ -> raise Abort) + err_formatter + ("@[" ^^ fmt ^^ ".@]@.@[Fatal error.@]@.") + +let error fmt = + incr num_errors; + eprintf ("@[" ^^ fmt ^^ ".@]@.") + +let warning fmt = + incr num_warnings; + eprintf ("@[" ^^ fmt ^^ ".@]@.") + +let check_errors () = + if !num_errors > 0 then + eprintf "@[%d error%s detected.@]@." + !num_errors + (if !num_errors = 1 then "" else "s"); + if !warn_error && !num_warnings > 0 then + eprintf "@[%d error-enabled warning%s detected.@]@." + !num_warnings + (if !num_warnings = 1 then "" else "s"); + !num_errors > 0 || (!warn_error && !num_warnings > 0) + + -- cgit