mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-15 23: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;
|
bool complaint_issued;
|
||||||
static unsigned *indent_ptr = 0;
|
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.
|
/** Report an error message.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -31,21 +31,26 @@ extern "C" {
|
|||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Wnone = 0, /**< Issue no warnings. */
|
Wnone = 0, /**< Issue no warnings. */
|
||||||
Werror = 1 << 0, /**< Warnings are treated as errors. */
|
Wmidrule_values = 1 << 0, /**< Unset or unused midrule values. */
|
||||||
Wmidrule_values = 1 << 1, /**< Unset or unused midrule values. */
|
Wyacc = 1 << 1, /**< POSIXME. */
|
||||||
Wyacc = 1 << 2, /**< POSIXME. */
|
Wconflicts_sr = 1 << 2, /**< S/R conflicts. */
|
||||||
Wconflicts_sr = 1 << 3, /**< S/R conflicts. */
|
Wconflicts_rr = 1 << 3, /**< R/R conflicts. */
|
||||||
Wconflicts_rr = 1 << 4, /**< R/R conflicts. */
|
Wother = 1 << 4, /**< All other warnings. */
|
||||||
Wother = 1 << 5, /**< All other warnings. */
|
|
||||||
complaint = 1 << 6, /**< All complaints. */
|
Werror = 1 << 10, /**< Warnings are treated as errors. */
|
||||||
fatal = 1 << 7, /**< All fatal errors. */
|
complaint = 1 << 11, /**< All complaints. */
|
||||||
Wall = ~Werror /**< All above warnings. */
|
fatal = 1 << 12, /**< All fatal errors. */
|
||||||
|
silent = 1 << 13, /**< Do not display the warning type. */
|
||||||
|
Wall = ~Werror /**< All above warnings. */
|
||||||
} warnings;
|
} warnings;
|
||||||
|
|
||||||
/** What warnings are issued. */
|
/** What warnings are issued. */
|
||||||
extern warnings warnings_flag;
|
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
|
/** Record that a warning is about to be issued, and treat it as an
|
||||||
error if <tt>warnings_flag & Werror</tt>. This is exported
|
error if <tt>warnings_flag & Werror</tt>. This is exported
|
||||||
only for the sake of Yacc-compatible conflict reports in conflicts.c.
|
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);
|
ARGMATCH_VERIFY (warnings_args, warnings_types);
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------.
|
/*-------------------------------------------.
|
||||||
| Display the help message and exit STATUS. |
|
| Display the help message and exit STATUS. |
|
||||||
`-------------------------------------------*/
|
`-------------------------------------------*/
|
||||||
|
|||||||
@@ -42,8 +42,6 @@
|
|||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "tables.h"
|
#include "tables.h"
|
||||||
|
|
||||||
# define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
|
|
||||||
|
|
||||||
static struct obstack format_obstack;
|
static struct obstack format_obstack;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
|
||||||
#define STREQ(L, R) (strcmp(L, R) == 0)
|
#define STREQ(L, R) (strcmp(L, R) == 0)
|
||||||
#define STRNEQ(L, R) (!STREQ(L, R))
|
#define STRNEQ(L, R) (!STREQ(L, R))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user