diagnostics: factor the list of warning names

* src/getargs.h, src/getargs.c (warnings_args, warnings_types): Make
them public.
* src/complain.h, src/complain.c (warnings_print_categories): Its
only use outside complain.c was removed in a recent commit, so
make it static.
Simplify its implementation.
Use warnings_args and warnings_types.
* src/muscle-tab.c (muscle_percent_define_check_values): Make it
silent.
This commit is contained in:
Akim Demaille
2013-02-11 10:25:08 +01:00
parent fec5f3c0cc
commit 219458e22f
5 changed files with 26 additions and 35 deletions

View File

@@ -38,35 +38,20 @@ warnings errors_flag;
err_status complaint_status = status_none;
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",
"deprecated",
"precedence",
"other"
};
/** Display a "[-Wyacc]" like message on \a f. */
bool any = false;
int i;
for (i = 0; i < ARRAY_CARDINALITY (warn_names); ++i)
if (warn_flags & 1 << i)
{
bool err = warn_flags & errors_flag;
fprintf (stderr, "%s-W", any ? ", " : " [");
fprintf (stderr, "%s%s", err ? "error=" : "" , warn_names[i]);
any = true;
}
if (any)
fprintf (stderr, "]");
}
static void
warnings_print_categories (warnings warn_flags, FILE *f)
{
/* Display only the first match, the second is "-Wall". */
int i;
for (i = 0; warnings_args[i]; ++i)
if (warn_flags & warnings_types[i])
{
bool err = warn_flags & errors_flag;
fprintf (f, " [-W%s%s]", err ? "error=" : "" , warnings_args[i]);
break;
}
}
/** Report an error message.
@@ -109,7 +94,8 @@ error_message (const location *loc, warnings flags, const char *prefix,
fprintf (stderr, "%s: ", prefix);
vfprintf (stderr, message, args);
warnings_print_categories (flags);
if (! (flags & silent))
warnings_print_categories (flags, stderr);
{
size_t l = strlen (message);
if (l < 2 || message[l - 2] != ':' || message[l - 1] != ' ')

View File

@@ -57,9 +57,6 @@ extern warnings warnings_flag;
/** What warnings are made errors. */
extern warnings errors_flag;
/** Display a "[-Wyacc]" like message on stderr. */
void warnings_print_categories (warnings warn_flags);
/** Make a complaint, with maybe a location. */
void complain (location const *loc, warnings flags, char const *message, ...)
__attribute__ ((__format__ (__printf__, 3, 4)));

View File

@@ -240,7 +240,7 @@ ARGMATCH_VERIFY (trace_args, trace_types);
| --warnings's handling. |
`------------------------*/
static const char * const warnings_args[] =
const char * const warnings_args[] =
{
"none",
"midrule-values",
@@ -255,7 +255,7 @@ static const char * const warnings_args[] =
0
};
static const int warnings_types[] =
const int warnings_types[] =
{
Wnone,
Wmidrule_values,

View File

@@ -121,6 +121,14 @@ enum feature
/** What additional features to use. */
extern int feature_flag;
/*------------.
| --warning. |
`------------*/
/* Null-terminated list. */
extern const char * const warnings_args[];
extern const int warnings_types[];
/** Process the command line arguments.
*
* \param argc size of \a argv

View File

@@ -664,7 +664,7 @@ muscle_percent_define_check_values (char const * const *values)
quote (*variablep), quote_n (1, value));
i += SUB_INDENT;
for (values = variablep + 1; *values; ++values)
complain_indent (&loc, complaint | no_caret, &i,
complain_indent (&loc, complaint | no_caret | silent, &i,
_("accepted value: %s"), quote (*values));
}
else