summaryrefslogtreecommitdiff
path: root/src/reporting.ml
diff options
context:
space:
mode:
authorAlasdair Armstrong2019-06-04 16:37:48 +0100
committerAlasdair Armstrong2019-06-04 16:37:48 +0100
commit6d3a6edcd616621eb40420cfb16a34762a32c5c1 (patch)
treed3a753af05b4a3d40a5ce0c6eb7711770105caba /src/reporting.ml
parente24587857d1e61b428d784c699a683984c00ce36 (diff)
parent239e13dc149af80f979ea95a3c9b42220481a0a1 (diff)
Merge branch 'sail2' into separate_bv
Diffstat (limited to 'src/reporting.ml')
-rw-r--r--src/reporting.ml25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/reporting.ml b/src/reporting.ml
index 9387ee6b..0b727836 100644
--- a/src/reporting.ml
+++ b/src/reporting.ml
@@ -95,6 +95,8 @@
(* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *)
(**************************************************************************)
+let opt_warnings = ref true
+
type pos_or_loc = Loc of Parse_ast.l | Pos of Lexing.position
let print_err_internal p_l m1 m2 =
@@ -143,7 +145,7 @@ let dest_err = function
| Err_general (l, m) -> ("Error", Loc l, m)
| Err_unreachable (l, (file, line, _, _), m) ->
(Printf.sprintf "Internal error: Unreachable code (at \"%s\" line %d)" file line, Loc l, m ^ issues)
- | Err_todo (l, m) -> ("Todo" ^ m, Loc l, "")
+ | Err_todo (l, m) -> ("Todo", Loc l, m)
| Err_syntax (p, m) -> ("Syntax error", Pos p, m)
| Err_syntax_loc (l, m) -> ("Syntax error", Loc l, m)
| Err_lex (p, s) -> ("Lexical error", Pos p, s)
@@ -164,3 +166,24 @@ let unreachable l pos msg =
let print_error e =
let (m1, pos_l, m2) = dest_err e in
print_err_internal pos_l m1 m2
+
+(* Warnings *)
+
+module StringSet = Set.Make(String)
+
+let ignored_files = ref StringSet.empty
+
+let suppress_warnings_for_file f =
+ ignored_files := StringSet.add f !ignored_files
+
+let warn str1 l str2 =
+ if !opt_warnings then
+ match simp_loc l with
+ | None ->
+ prerr_endline (Util.("Warning" |> yellow |> clear) ^ ": " ^ str1 ^ "\n" ^ str2)
+ | Some (p1, p2) when not (StringSet.mem p1.pos_fname !ignored_files) ->
+ prerr_endline (Util.("Warning" |> yellow |> clear) ^ ": "
+ ^ str1 ^ (if str1 <> "" then " " else "") ^ loc_to_string l ^ str2)
+ | Some _ -> ()
+ else
+ ()