[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/4] warnings: be ready to print warnings categories
From: |
Akim Demaille |
Subject: |
[PATCH 3/4] warnings: be ready to print warnings categories |
Date: |
Fri, 29 Jun 2012 16:41:26 +0200 |
From: Victor Santet <address@hidden>
A function to print warnings categories, like -Wyacc, -Wother, etc.
* src/complain.h, src/complain.c (print_warning_categories): New function.
* src/output.c (ARRAY_CARDINALITY): Move it to file 'src/system.h'.
* src/complain.h (enum warnings): New value, 'silent', "complain"
must not display the warning type.
---
src/complain.c | 27 ++++++++++++++++++++++++++-
src/complain.h | 25 +++++++++++++++----------
src/getargs.c | 1 -
src/output.c | 2 --
src/system.h | 1 +
5 files changed, 42 insertions(+), 14 deletions(-)
diff --git a/src/complain.c b/src/complain.c
index a84718b..0f00358 100644
--- a/src/complain.c
+++ b/src/complain.c
@@ -34,7 +34,32 @@ warnings warnings_flag = Wconflicts_sr | Wconflicts_rr |
Wother;
bool complaint_issued;
static unsigned *indent_ptr = 0;
-
+void
+warnings_print_categories (warnings warn_flags)
+{
+ if (! (warn_flags & silent))
+ {
+ char const *warn_names[] =
+ {
+ "midrule-values",
+ "yacc",
+ "conflicts-sr",
+ "conflicts-rr",
+ "other"
+ };
+
+ bool any = false;
+ int i;
+ for (i = 0; i < ARRAY_CARDINALITY (warn_names); ++i)
+ if (warn_flags & 1 << i)
+ {
+ fprintf (stderr, "%s-W%s", any ? ", " : " [", warn_names[i]);
+ any = true;
+ }
+ if (any)
+ fprintf (stderr, "]");
+ }
+}
/** Report an error message.
*
diff --git a/src/complain.h b/src/complain.h
index 79f2017..e8c26d1 100644
--- a/src/complain.h
+++ b/src/complain.h
@@ -31,21 +31,26 @@ extern "C" {
typedef enum
{
- Wnone = 0, /**< Issue no warnings. */
- Werror = 1 << 0, /**< Warnings are treated as errors. */
- Wmidrule_values = 1 << 1, /**< Unset or unused midrule values. */
- Wyacc = 1 << 2, /**< POSIXME. */
- Wconflicts_sr = 1 << 3, /**< S/R conflicts. */
- Wconflicts_rr = 1 << 4, /**< R/R conflicts. */
- Wother = 1 << 5, /**< All other warnings. */
- complaint = 1 << 6, /**< All complaints. */
- fatal = 1 << 7, /**< All fatal errors. */
- Wall = ~Werror /**< All above warnings. */
+ Wnone = 0, /**< Issue no warnings. */
+ Wmidrule_values = 1 << 0, /**< Unset or unused midrule values. */
+ Wyacc = 1 << 1, /**< POSIXME. */
+ Wconflicts_sr = 1 << 2, /**< S/R conflicts. */
+ Wconflicts_rr = 1 << 3, /**< R/R conflicts. */
+ Wother = 1 << 4, /**< All other warnings. */
+
+ Werror = 1 << 10, /**< Warnings are treated as errors. */
+ complaint = 1 << 11, /**< All complaints. */
+ fatal = 1 << 12, /**< All fatal errors. */
+ silent = 1 << 13, /**< Do not display the warning type. */
+ Wall = ~Werror /**< All above warnings. */
} warnings;
/** What warnings are issued. */
extern warnings warnings_flag;
+/** Display a "[-Wyacc]" like message on stderr. */
+void warnings_print_categories (warnings warn_flags);
+
/** Record that a warning is about to be issued, and treat it as an
error if <tt>warnings_flag & Werror</tt>. This is exported
only for the sake of Yacc-compatible conflict reports in conflicts.c.
diff --git a/src/getargs.c b/src/getargs.c
index f5d3767..8596958 100644
--- a/src/getargs.c
+++ b/src/getargs.c
@@ -251,7 +251,6 @@ static const int warnings_types[] =
ARGMATCH_VERIFY (warnings_args, warnings_types);
-
/*-------------------------------------------.
| Display the help message and exit STATUS. |
`-------------------------------------------*/
diff --git a/src/output.c b/src/output.c
index 723870d..d656097 100644
--- a/src/output.c
+++ b/src/output.c
@@ -42,8 +42,6 @@
#include "symtab.h"
#include "tables.h"
-# define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
-
static struct obstack format_obstack;
diff --git a/src/system.h b/src/system.h
index 0d69e93..5613a92 100644
--- a/src/system.h
+++ b/src/system.h
@@ -39,6 +39,7 @@
#include <stdlib.h>
#include <string.h>
+#define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
#define STREQ(L, R) (strcmp(L, R) == 0)
#define STRNEQ(L, R) (!STREQ(L, R))
--
1.7.11.1
Re: [PATCH 0/5] Warnings categories, Akim Demaille, 2012/06/29