[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: get -Wyacc out of -Wall (was: RFC: explicit empty right-hand side of
From: |
Akim Demaille |
Subject: |
Re: get -Wyacc out of -Wall (was: RFC: explicit empty right-hand side of a rule) |
Date: |
Mon, 4 Mar 2013 18:23:22 +0100 |
Le 27 févr. 2013 à 15:41, Akim Demaille <address@hidden> a écrit :
> Would someone object if -Wall meant "enable all the warnings except
> -Wyacc"?
I installed this.
commit f24695eff98c1d8c19b6d9fe8482cc2eca07e6b2
Author: Akim Demaille <address@hidden>
Date: Mon Mar 4 18:15:49 2013 +0100
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.
diff --git a/NEWS b/NEWS
index c92eae5..ef9f4fa 100644
--- 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
diff --git a/doc/bison.texi b/doc/bison.texi
index 5b1b0de..aad2b8c 100644
--- a/doc/bison.texi
+++ b/doc/bison.texi
@@ -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
diff --git a/src/complain.c b/src/complain.c
index 2e87097..fdc4b54 100644
--- a/src/complain.c
+++ b/src/complain.c
@@ -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
{
diff --git a/src/complain.h b/src/complain.h
index 4239bf6..0d81503 100644
--- a/src/complain.h
+++ b/src/complain.h
@@ -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.
diff --git a/src/getargs.c b/src/getargs.c
index e4ffc02..0254865 100644
--- a/src/getargs.c
+++ b/src/getargs.c
@@ -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\
diff --git a/tests/input.at b/tests/input.at
index 499141a..8a677fa 100644
--- a/tests/input.at
+++ b/tests/input.at
@@ -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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: get -Wyacc out of -Wall (was: RFC: explicit empty right-hand side of a rule),
Akim Demaille <=