]> git.saurik.com Git - bison.git/commitdiff
diagnostics: improve -fcaret for list of accepted values
authorAkim Demaille <akim@lrde.epita.fr>
Sat, 15 Dec 2012 20:54:27 +0000 (21:54 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Sun, 16 Dec 2012 14:16:42 +0000 (15:16 +0100)
Instead of

  input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
   %define api.push_pull "neither"
           ^^^^^^^^^^^^^
  input.y:1.9-21:     accepted value: 'pull'
   %define api.push_pull "neither"
           ^^^^^^^^^^^^^
  input.y:1.9-21:     accepted value: 'push'
   %define api.push_pull "neither"
           ^^^^^^^^^^^^^
  input.y:1.9-21:     accepted value: 'both'
   %define api.push_pull "neither"
           ^^^^^^^^^^^^^

report

  input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
   %define api.push_pull "neither"
           ^^^^^^^^^^^^^
  input.y:1.9-21:     accepted value: 'pull'
  input.y:1.9-21:     accepted value: 'push'
  input.y:1.9-21:     accepted value: 'both'

* src/complain.h (no_caret): New.
* src/complain.c (error_message): Use it.
* src/muscle-tab.c (muscle_percent_define_check_values): Use it.
* src/scan-skel.l (flag): Ditto.
* tests/input.at: Adjust and check.

src/complain.c
src/complain.h
src/muscle-tab.c
src/scan-skel.l
tests/input.at

index ee1b4a19ae13e103924c5797efe65bba72359474..984b13610d8297fe465962926634a9bd5f03c713 100644 (file)
@@ -114,7 +114,7 @@ error_message (const location *loc, warnings flags, const char *prefix,
       {
         putc ('\n', stderr);
         fflush (stderr);
       {
         putc ('\n', stderr);
         fflush (stderr);
-        if (loc && feature_flag & feature_caret)
+        if (loc && feature_flag & feature_caret && !(flags & no_caret))
           location_caret (stderr, *loc);
       }
   }
           location_caret (stderr, *loc);
       }
   }
index 56ddfa045a5344c073dab0f8cf10a581fbbe9a42..d715bb6ac2fb54c465379299c88f9b7500028fd9 100644 (file)
@@ -43,6 +43,7 @@ typedef enum
     complaint         = 1 << 11, /**< All complaints.  */
     fatal             = 1 << 12, /**< All fatal errors.  */
     silent            = 1 << 13, /**< Do not display the warning type.  */
     complaint         = 1 << 11, /**< All complaints.  */
     fatal             = 1 << 12, /**< All fatal errors.  */
     silent            = 1 << 13, /**< Do not display the warning type.  */
+    no_caret          = 1 << 14, /**< Do not display caret location.  */
 
     /**< All above warnings.  */
     Wall              = ~complaint & ~fatal & ~silent
 
     /**< All above warnings.  */
     Wall              = ~complaint & ~fatal & ~silent
index f3933c3faf02412f37bd3d792c165ecfe6c7a4ce..7a1120456083767ce64b3c906c1d27a1f5bb4734 100644 (file)
@@ -608,8 +608,8 @@ muscle_percent_define_check_values (char const * const *values)
                                quote (*variablep), quote_n (1, value));
               i += SUB_INDENT;
               for (values = variablep + 1; *values; ++values)
                                quote (*variablep), quote_n (1, value));
               i += SUB_INDENT;
               for (values = variablep + 1; *values; ++values)
-                complain_indent (&loc, complaint, &i, _("accepted value: %s"),
-                                 quote (*values));
+                complain_indent (&loc, complaint | no_caret, &i,
+                                 _("accepted value: %s"), quote (*values));
             }
           else
             {
             }
           else
             {
index a0d9c9e993f531431eaf8bfa168b0bbe2774686b..5d63541ea7709a989b8cd052cf02a7fe6ca42ab9 100644 (file)
@@ -186,7 +186,7 @@ flag (const char *arg)
   else if (STREQ (arg, "fatal"))
     return fatal;
   else if (STREQ (arg, "note"))
   else if (STREQ (arg, "fatal"))
     return fatal;
   else if (STREQ (arg, "note"))
-    return silent | complaint;
+    return silent | complaint | no_caret;
   else if (STREQ (arg, "warn"))
     return Wother;
   else
   else if (STREQ (arg, "warn"))
     return Wother;
   else
index 5e5b1e8f2995079d024b719193477b781a2d4914..a5d8d92b93bb20b55f94f6170d7a0a2f3dea3d27 100644 (file)
@@ -1343,6 +1343,18 @@ input.y:1.9-21:     accepted value: 'push'
 input.y:1.9-21:     accepted value: 'both'
 ]])
 
 input.y:1.9-21:     accepted value: 'both'
 ]])
 
+AT_BISON_CHECK([[-fcaret input.y]], [1], [],
+[[input.y:1.9-21: warning: deprecated %define variable name: 'api.push_pull', use 'api.push-pull' [-Wdeprecated]
+ %define api.push_pull "neither"
+         ^^^^^^^^^^^^^
+input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
+ %define api.push_pull "neither"
+         ^^^^^^^^^^^^^
+input.y:1.9-21:     accepted value: 'pull'
+input.y:1.9-21:     accepted value: 'push'
+input.y:1.9-21:     accepted value: 'both'
+]])
+
 AT_DATA([[input.y]],
 [[%define lr.keep_unreachable_states maybe
 %%
 AT_DATA([[input.y]],
 [[%define lr.keep_unreachable_states maybe
 %%