]> git.saurik.com Git - bison.git/commitdiff
diagnostics: no longer include the yacc category in -Wall
authorAkim Demaille <akim@lrde.epita.fr>
Mon, 4 Mar 2013 17:15:49 +0000 (18:15 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Mon, 4 Mar 2013 17:21:44 +0000 (18:21 +0100)
It would be a pity to warn the users against Bison features...
http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00107.html

* src/complain.h, src/complain.c (Wall): Disable Wyacc.
(Weverything): New (hidden so far) category which really denotes all
the categories (what used to be Wall).
(warnings_args, warnings_types): Adjust.
(warning_argmatch): Now !none = Weverything and conversely, no longer Wall.
* NEWS, doc/bison.texi, src/getargs.c: Adjust the documentation.
* tests/input.at (-Werror is not affected by -Wnone and -Wall): Adjust
by not using a -Wyacc type of warning.

NEWS
doc/bison.texi
src/complain.c
src/complain.h
src/getargs.c
tests/input.at

diff --git a/NEWS b/NEWS
index c92eae5c551a659ccb0123278d11f2a9c87be3db..ef9f4fa9f7361a6ddba601914ec1ef98fbc1de72 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -216,6 +216,11 @@ GNU Bison NEWS
     bar.y: error: shift/reduce conflicts: 1 found, 0 expected
     bar.y: error: reduce/reduce conflicts: 2 found, 0 expected
 
+** Incompatibilities with POSIX Yacc
+
+  The 'yacc' category is no longer part of '-Wall', enable it explicitly
+  with '-Wyacc'.
+
 ** Additional yylex/yyparse arguments
 
   The new directive %param declares additional arguments to both yylex and
index 5b1b0de4c2d089ec338789500ab01e91e8501982..aad2b8c35eb3eb460b89987381caaa71529e61d0 100644 (file)
@@ -9853,9 +9853,11 @@ releases of Bison may move warnings from this category to new, more specific
 categories.
 
 @item all
-All the warnings.
+All the warnings except @code{yacc}.
+
 @item none
 Turn off all the warnings.
+
 @item error
 See @option{-Werror}, below.
 @end table
index 2e87097fd225890dcb7aab0b623fd8f8a8170066..fdc4b5426b490b0c74bfd785b0fa6c8c327daf8d 100644 (file)
@@ -68,6 +68,7 @@ static const char * const warnings_args[] =
   "other",
   "all",
   "error",
+  "everything",
   0
 };
 
@@ -83,7 +84,8 @@ static const int warnings_types[] =
   Wprecedence,
   Wother,
   Wall,
-  Werror
+  Werror,
+  Weverything
 };
 
 ARGMATCH_VERIFY (warnings_args, warnings_types);
@@ -94,10 +96,10 @@ warning_argmatch (char const *arg, size_t no, size_t err)
   int value = XARGMATCH ("--warning", arg + no + err,
                          warnings_args, warnings_types);
 
-  /* -Wnone == -Wno-all, and -Wno-none == -Wall.  */
+  /* -Wnone == -Wno-everything, and -Wno-none == -Weverything.  */
   if (!value)
     {
-      value = Wall;
+      value = Weverything;
       no = !no;
     }
 
@@ -145,7 +147,7 @@ warnings_argmatch (char *args)
       else if (STREQ (args, "no-error"))
         {
           warnings_are_errors = false;
-          warning_argmatch ("no-error=all", 3, 6);
+          warning_argmatch ("no-error=everything", 3, 6);
         }
       else
         {
index 4239bf6db1f3732a345b9f0b6f5f39b43c2cb4fd..0d81503df7eb2244d848660a50a86982d930e0c1 100644 (file)
@@ -98,7 +98,8 @@ typedef enum
     no_caret          = 1 << 14, /**< Do not display caret location.  */
 
     /**< All above warnings.  */
-    Wall              = ~complaint & ~fatal & ~silent
+    Weverything       = ~complaint & ~fatal & ~silent,
+    Wall              = Weverything & ~Wyacc
   } warnings;
 
 /** Whether the warnings of \a flags are all unset.
index e4ffc02e08ee3b303daf64ee0cb16df0b6e7fe67..02548650cdf30785fccf7b27109cdf3ec3ffc59f 100644 (file)
@@ -330,7 +330,7 @@ Warning categories include:\n\
   'empty-rule'        empty rules without %empty\n\
   'precedence'        useless precedence and associativity\n\
   'other'             all other warnings (enabled by default)\n\
-  'all'               all the warnings\n\
+  'all'               all the warnings except 'yacc'\n\
   'no-CATEGORY'       turn off warnings in CATEGORY\n\
   'none'              turn off all the warnings\n\
   'error[=CATEGORY]'  treat warnings as errors\n\
index 499141ad675140e1503117388bd7456a3a2e1f23..8a677fa0b73a37fdb5e90a4ca86be0c4a9eedc2d 100644 (file)
@@ -1708,27 +1708,27 @@ AT_SETUP([[-Werror is not affected by -Wnone and -Wall]])
 
 AT_DATA([[input.y]],
 [[%%
-foo-bar: %empty;
+a: '0' { $$ = $; };
 ]])
 
 # -Werror is not enabled by -Wall or equivalent.
 AT_BISON_CHECK([[-Wall input.y]], [[0]], [[]],
-[[input.y:2.1-7: warning: POSIX Yacc forbids dashes in symbol names: foo-bar [-Wyacc]
+[[input.y:2.15: warning: stray '$' [-Wother]
 ]])
 AT_BISON_CHECK([[-W input.y]], [[0]], [[]],
-[[input.y:2.1-7: warning: POSIX Yacc forbids dashes in symbol names: foo-bar [-Wyacc]
+[[input.y:2.15: warning: stray '$' [-Wother]
 ]])
 AT_BISON_CHECK([[-Wno-none input.y]], [[0]], [[]],
-[[input.y:2.1-7: warning: POSIX Yacc forbids dashes in symbol names: foo-bar [-Wyacc]
+[[input.y:2.15: warning: stray '$' [-Wother]
 ]])
 
 # -Werror is not disabled by -Wnone or equivalent.
-AT_BISON_CHECK([[-Werror,none,yacc input.y]], [[1]], [[]], [[stderr]])
-AT_CHECK([[sed 's/^.*bison:/bison:/' stderr]], [[0]],
-[[input.y:2.1-7: error: POSIX Yacc forbids dashes in symbol names: foo-bar [-Werror=yacc]
+AT_BISON_CHECK([[-Werror,none,other input.y]], [[1]], [[]],
+[[input.y:2.15: error: stray '$' [-Werror=other]
+]])
+AT_BISON_CHECK([[-Werror,no-all,other input.y]], [[1]], [[]],
+[[input.y:2.15: error: stray '$' [-Werror=other]
 ]])
-[mv stderr experr]
-AT_BISON_CHECK([[-Werror,no-all,yacc input.y]], [[1]], [[]], [[experr]])
 
 AT_CLEANUP