diff options
Diffstat (limited to 'compiler/Errors.ml')
-rw-r--r-- | compiler/Errors.ml | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/compiler/Errors.ml b/compiler/Errors.ml index bfdf5796..41e841f0 100644 --- a/compiler/Errors.ml +++ b/compiler/Errors.ml @@ -13,43 +13,63 @@ exception CFailure of string let error_list : (Meta.meta option * string) list ref = ref [] -let push_error (file : string) (line : int) (meta : Meta.meta option) (msg : string) = - error_list := (meta, msg ^ "\n In file:" ^ file ^ "\n Line:" ^ string_of_int line) :: !error_list +let push_error (file : string) (line : int) (meta : Meta.meta option) + (msg : string) = + error_list := + (meta, msg ^ "\n In file:" ^ file ^ "\n Line:" ^ string_of_int line) + :: !error_list -let save_error (file : string) (line : int) ?(b : bool = true) (meta : Meta.meta option) (msg : string) = +let save_error (file : string) (line : int) ?(b : bool = true) + (meta : Meta.meta option) (msg : string) = push_error file line meta msg; match meta with | Some m -> - if !Config.fail_hard && b then - raise (Failure (format_error_message m (msg ^ "\n In file:" ^ file ^ "\n Line:" ^ string_of_int line))) - | None -> if !Config.fail_hard && b then raise (Failure msg) + if !Config.fail_hard && not b then + raise + (Failure + (format_error_message m + (msg ^ "\n In file:" ^ file ^ "\n Line:" ^ string_of_int line))) + | None -> if !Config.fail_hard && not b then raise (Failure msg) -let craise_opt_meta (file : string) (line : int) (meta : Meta.meta option) (msg : string) = +let craise_opt_meta (file : string) (line : int) (meta : Meta.meta option) + (msg : string) = match meta with | Some m -> - if !Config.fail_hard then raise (Failure (format_error_message m (msg ^ "\n In file:" ^ file ^ "\n Line:" ^ string_of_int line))) + if !Config.fail_hard then + raise + (Failure + (format_error_message m + (msg ^ "\n In file:" ^ file ^ "\n Line:" ^ string_of_int line))) else let () = push_error file line (Some m) msg in raise (CFailure msg) | None -> - if !Config.fail_hard then raise (Failure (msg ^ "\n In file:" ^ file ^ "\n Line:" ^ string_of_int line)) + if !Config.fail_hard then + raise + (Failure (msg ^ "\n In file:" ^ file ^ "\n Line:" ^ string_of_int line)) else let () = push_error file line None msg in raise (CFailure msg) -let craise (file : string) (line : int) (meta : Meta.meta) (msg : string) = craise_opt_meta file line (Some meta) msg +let craise (file : string) (line : int) (meta : Meta.meta) (msg : string) = + craise_opt_meta file line (Some meta) msg -let cassert_opt_meta (file : string) (line : int) (b : bool) (meta : Meta.meta option) (msg : string) = +let cassert_opt_meta (file : string) (line : int) (b : bool) + (meta : Meta.meta option) (msg : string) = if not b then craise_opt_meta file line meta msg -let cassert (file : string) (line : int) (b : bool) (meta : Meta.meta) (msg : string) = +let cassert (file : string) (line : int) (b : bool) (meta : Meta.meta) + (msg : string) = cassert_opt_meta file line b (Some meta) msg -let sanity_check (file : string) (line : int) b meta = cassert file line b meta "Internal error, please file an issue" +let sanity_check (file : string) (line : int) b meta = + cassert file line b meta "Internal error, please file an issue" let sanity_check_opt_meta (file : string) (line : int) b meta = cassert_opt_meta file line b meta "Internal error, please file an issue" -let internal_error (file : string) (line : int) meta = craise file line meta "Internal error, please report an issue" +let internal_error (file : string) (line : int) meta = + craise file line meta "Internal error, please report an issue" + let exec_raise = craise let exec_assert = cassert |