mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
warnings: be ready to print warnings categories
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.
This commit is contained in:
committed by
Akim Demaille
parent
3e153163c7
commit
b640317060
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -251,7 +251,6 @@ static const int warnings_types[] =
|
||||
|
||||
ARGMATCH_VERIFY (warnings_args, warnings_types);
|
||||
|
||||
|
||||
/*-------------------------------------------.
|
||||
| Display the help message and exit STATUS. |
|
||||
`-------------------------------------------*/
|
||||
|
||||
@@ -42,8 +42,6 @@
|
||||
#include "symtab.h"
|
||||
#include "tables.h"
|
||||
|
||||
# define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
|
||||
|
||||
static struct obstack format_obstack;
|
||||
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user