diff options
author | Akim Demaille <akim@lrde.epita.fr> | 2013-10-16 10:55:28 +0200 |
---|---|---|
committer | Akim Demaille <akim@lrde.epita.fr> | 2013-10-16 14:56:09 +0200 |
commit | e4678430c2506c577c05e92437b187fe9daf0b7f (patch) | |
tree | d3149da011b30215dee8a9f24d29158253e73ff1 /tests/local.at | |
parent | 2b7fe38c36cdf69428039c4bafbf47be15b807fa (diff) | |
download | bison-e4678430c2506c577c05e92437b187fe9daf0b7f.tar.gz |
diagnostics: "-Werror -Wno-error=foo" must not emit errors
Currently "-Werror -Wno-error=foo" still turns "foo" warnings into errors.
Reported by Alexandre Duret-Lutz.
See http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html.
* src/complain.c (errority, errority_flag): New.
(complain_init): Initialize the latter.
(warning_argmatch): Extract the loop iterating on the flag's bits.
Set and unset errority_flag here.
(warnings_argmatch): -Wno-error is not the same as -Wno-error=everything:
we must remember if category foo was explicitly turned in an error/warning
via -W(no-)error=foo.
(warning_severity): Use errority_flag.
* tests/input.at (Symbols): Just check --yacc, not -Wyacc, that's the
job of tests on -W.
(-Werror is not affected by -Wnone and -Wall): Rename as...
(-Werror combinations): this.
Tests more combinations of -W, -W(no-)error, and -W(no-)error=foo.
* tests/local.at (AT_BISON_CHECK_WARNINGS): Don't expect -Werror
to turn runs that issue warnings into runs with errors, as the
warnings might be enforced as warnings by -Wno-error=foo, in which
case -Werror does not change anything.
* doc/bison.texi (Bison Options): Try to be clearer about how
-W(no-)error and -W(no-)error=foo interact.
Diffstat (limited to 'tests/local.at')
-rw-r--r-- | tests/local.at | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/tests/local.at b/tests/local.at index 7948faa5..ee00e009 100644 --- a/tests/local.at +++ b/tests/local.at @@ -635,9 +635,12 @@ m4_define([AT_BISON_CHECK_], # ---------------------------------------------------------- # Check that warnings (if some are expected) are correctly # turned into errors with -Werror, etc. +# +# When -Wno-error is used, the rules are really different, don't try. m4_define([AT_BISON_CHECK_WARNINGS], [m4_if(m4_bregexp([$4], [: warning: ]), [-1], [], - [m4_null_if([$2], [AT_BISON_CHECK_WARNINGS_($@)])])]) + m4_bregexp([$1], [-Wno-error=]), [-1], + [m4_null_if([$2], [AT_BISON_CHECK_WARNINGS_($@)])])]) m4_define([AT_BISON_CHECK_WARNINGS_], [[# Defining POSIXLY_CORRECT causes bison to complain if options are |