]> git.saurik.com Git - bison.git/blobdiff - src/complain.c
Merge remote-tracking branch 'origin/maint'
[bison.git] / src / complain.c
index 933b402c9e9ed0743bb33aadf74348fef4290c8c..7d905de5055aaa94debb5f998efdef1e7d258221 100644 (file)
@@ -34,7 +34,32 @@ warnings warnings_flag = Wconflicts_sr | Wconflicts_rr | Wother;
 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.
  *
@@ -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);
     }