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
open Mo_config
include Args
(* Warning and diagnostic levels *)
let validate_warning_code code =
code <> "" &&
List.exists (fun (c, _, _) -> String.equal c code) Error_codes.warning_codes
let modify_warning_levels level s =
let codes = String.split_on_char ',' s in
codes |> List.iter (fun code ->
if validate_warning_code code then
Flags.set_warning_level code level
else begin
Printf.eprintf "moc: invalid warning code: %s. Run 'moc --warn-help' to see available warning codes." code; exit 1
end)
let warning_args = [
"--hide-warnings", Arg.Clear Flags.print_warnings, " hide warnings";
"-Werror", Arg.Set Flags.warnings_are_errors, " treat warnings as errors";
"-A", Arg.String (modify_warning_levels Flags.Allow),
"<codes> disable (allow) comma-separated warning codes, e.g. -A M0194,M0217";
"-W", Arg.String (modify_warning_levels Flags.Warn),
"<codes> enable (warn) comma-separated warning codes, e.g. -W M0223";
"-E", Arg.String (modify_warning_levels Flags.Error),
"<codes> treat as error comma-separated warning codes, e.g. -E M0217";
]