File: warning.ml

package info (click to toggle)
ocamlformat 0.27.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 12,068 kB
  • sloc: ml: 61,288; pascal: 4,739; lisp: 229; sh: 217; makefile: 121
file content (31 lines) | stat: -rw-r--r-- 1,037 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
let () = Clflags.error_style := Some Misc.Error_style.Short

let with_warning_filter ~filter_warning ~filter_alert ~f =
  let warning_reporter = !Location.warning_reporter in
  let alert_reporter = !Location.alert_reporter in
  (Location.warning_reporter :=
     fun loc warn ->
       if filter_warning loc warn then Location.default_warning_reporter loc warn
       else None) ;
  (Location.alert_reporter := fun loc alert ->
      if filter_alert loc alert then alert_reporter loc alert else None);
  let reset () =
    Location.warning_reporter := warning_reporter;
    Location.alert_reporter := alert_reporter
  in
  try
    let x = f () in
    reset () ; x
  with e -> reset () ; raise e

let print_warning l w =
  match Location.default_warning_reporter l w with
  | Some reporter -> Location.print_report Stdlib.Format.err_formatter reporter
  | None -> ()

let is_unexpected_docstring = function
  | Warnings.Unexpected_docstring _ -> true
  | _ -> false
  
let is_deprecated_alert alert =
  alert.Warnings.kind = "deprecated"