bool complaint_issued;
static unsigned *indent_ptr = 0;
-\f
+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.
*
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.