From 19ea6b14050674c9e5511ddc68fde16f3ccebb17 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Thu, 28 Mar 2019 14:48:00 +0100 Subject: [PATCH] diagnostics: expose a means to know whether a warning is enabled * src/complain.h, src/complain.c (warning_is_enabled): New. --- src/complain.c | 11 ++++++++--- src/complain.h | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/complain.c b/src/complain.c index a42b6a06..108a1fbd 100644 --- a/src/complain.c +++ b/src/complain.c @@ -338,12 +338,17 @@ warning_is_unset (warnings flags) return true; } +bool +warning_is_enabled (warnings flags) +{ + return severity_warning <= warning_severity (flags); +} + /** Display a "[-Wyacc]" like message on \a out. */ static void warnings_print_categories (warnings warn_flags, FILE *out) { - /* Display only the first match, the second is "-Wall". */ for (size_t i = 0; warnings_args[i]; ++i) if (warn_flags & warnings_types[i]) { @@ -356,6 +361,7 @@ warnings_print_categories (warnings warn_flags, FILE *out) warnings_args[i]); end_use_class (style, out); fputc (']', out); + /* Display only the first match, the second is "-Wall". */ return; } } @@ -426,8 +432,7 @@ error_message (const location *loc, warnings flags, severity sever, fflush (stderr); } -/** Raise a complaint. That can be a fatal error, an error or just a - warning. */ +/** Raise a complaint (fatal error, error or just warning). */ static void complains (const location *loc, warnings flags, const char *message, diff --git a/src/complain.h b/src/complain.h index 199f388d..9028b93a 100644 --- a/src/complain.h +++ b/src/complain.h @@ -125,6 +125,9 @@ typedef enum (Never enabled, never disabled). */ bool warning_is_unset (warnings flags); +/** Whether warnings of \a flags should be reported. */ +bool warning_is_enabled (warnings flags); + /** Make a complaint, with maybe a location. */ void complain (location const *loc, warnings flags, char const *message, ...) __attribute__ ((__format__ (__printf__, 3, 4)));