diagnostics: no longer include the yacc category in -Wall

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.
This commit is contained in:
Akim Demaille
2013-03-04 18:15:49 +01:00
parent 05e25f2384
commit f24695eff9
6 changed files with 26 additions and 16 deletions

5
NEWS
View File

@@ -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

View 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

View 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
{

View 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.

View 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\

View 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