]> git.saurik.com Git - bison.git/commitdiff
diagnostics: factor the list of warning names
authorAkim Demaille <akim@lrde.epita.fr>
Mon, 11 Feb 2013 09:25:08 +0000 (10:25 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Thu, 14 Feb 2013 14:00:51 +0000 (15:00 +0100)
* 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.

src/complain.c
src/complain.h
src/getargs.c
src/getargs.h
src/muscle-tab.c

index f9b2feadfa24eecf55d4eba20b0710b499e0b257..80731b723848e1f20bb1cb582650670293c9683c 100644 (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)
+/** Display a "[-Wyacc]" like message on \a f.  */
+
+static void
+warnings_print_categories (warnings warn_flags, FILE *f)
 {
-  if (! (warn_flags & silent))
-    {
-      char const *warn_names[] =
-        {
-          "midrule-values",
-          "yacc",
-          "conflicts-sr",
-          "conflicts-rr",
-          "deprecated",
-          "precedence",
-          "other"
-        };
-
-      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, "]");
-    }
+  /* 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] != ' ')
index 0110c6b5313848b8d2d4f491bd269720fdbea182..306d2e8746fb901c64496e6348a0db2d8360dfca 100644 (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)));
index fe6c1d4270bf605017cd42cf61af0bfb9630dd9d..7a637a20d26a3d325721df026dca41aaf21e8b7e 100644 (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,
index c246f28046dbef74a4e63aca417244c6ab4c31af..2fba265a0d03278cc3c6054e63603701245ade0c 100644 (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
index 8212895c3d7c6b3a41049b8ee43598a3246d4f18..490dadaeaccbc5d0e2b7829b93fd71b7b3a71ec6 100644 (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