X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/6fb8b25619267a0a04a776ca2f1e50e51966d332..b9c3c10c1c71e2789ac5efb645c4518e186c407a:/src/complain.c diff --git a/src/complain.c b/src/complain.c index 933b402c..7d905de5 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. * @@ -75,6 +100,7 @@ error_message (const location *loc, warnings flags, const char *prefix, fprintf (stderr, "%s: ", prefix); vfprintf (stderr, message, args); + warnings_print_categories (flags); { size_t l = strlen (message); if (l < 2 || message[l-2] != ':' || message[l-1] != ' ') @@ -115,10 +141,8 @@ complains (const location *loc, warnings flags, const char *message, error_message (loc, flags, _("warning"), message, args); } } - else + else if (warnings_flag & flags) { - if (! (warnings_flag & flags)) - return; set_warning_issued (); error_message (loc, flags, _("warning"), message, args); }