mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-13 22:33:03 +00:00
Disable unset/unused mid-rule value warnings by default, and recognize
--warnings=midrule-values to enable them. Discussed starting at <http://lists.gnu.org/archive/html/help-bison/2006-10/msg00030.html>. * NEWS (2.3a+): Mention. * src/getargs.c, src/getargs.h (warnings_args, warnings_types, enum warnings): Add entry for midrule-values subargument. * src/reader.c (symbol_should_be_used): Don't return true just because the value is a set/used mid-rule value unless --warnings=midrule-values was specified. * tests/input.at (Unused values, Unused values before symbol declarations): Run tests with and without --warnings=midrule-values. * src/reader.c (check_and_convert_grammar): Use symbol_list_free rather than LIST_FREE directly.
This commit is contained in:
@@ -80,13 +80,15 @@ m4_define([_AT_UNUSED_VALUES_DECLARATIONS],
|
||||
%destructor { destroy ($$); } INT a b c d e f g h i j k l;]]])
|
||||
|
||||
|
||||
# AT_CHECK_UNUSED_VALUES(DECLARATIONS_AFTER)
|
||||
# --------------------------------------------
|
||||
# AT_CHECK_UNUSED_VALUES(DECLARATIONS_AFTER, CHECK_MIDRULE_VALUES)
|
||||
# ------------------------------------------------------------------
|
||||
# Generate a grammar to test unused values,
|
||||
# compile it, run it. If DECLARATIONS_AFTER
|
||||
# is set, then the token, type, and destructor
|
||||
# declarations are generated after the rules
|
||||
# rather than before.
|
||||
# rather than before. If CHECK_MIDRULE_VALUES
|
||||
# is set, then --warnings=midrule-values is
|
||||
# set.
|
||||
|
||||
m4_define([AT_CHECK_UNUSED_VALUES],
|
||||
[AT_DATA([input.y],
|
||||
@@ -116,19 +118,19 @@ l: INT | INT { $<integer>$ = $<integer>1; } INT { $<integer>$ = $<integer>2 + $<
|
||||
_AT_UNUSED_VALUES_DECLARATIONS])
|
||||
)
|
||||
|
||||
AT_CHECK([bison input.y], [0], [],
|
||||
AT_CHECK([bison]m4_ifval($2, [ --warnings=midrule-values ])[ input.y], [0], [],
|
||||
[[input.y:11.10-32: warning: unset value: $]$[
|
||||
input.y:11.10-32: warning: unused value: $]1[
|
||||
input.y:11.10-32: warning: unused value: $]3[
|
||||
input.y:11.10-32: warning: unused value: $]5[
|
||||
input.y:12.9: warning: empty rule for typed nonterminal, and no action
|
||||
input.y:13.14-19: warning: unset value: $$
|
||||
]]m4_ifval($2, [[[input.y:13.14-19: warning: unset value: $$
|
||||
input.y:13.25-39: warning: unset value: $$
|
||||
input.y:13.10-59: warning: unset value: $]$[
|
||||
]]])[[input.y:13.10-59: warning: unset value: $]$[
|
||||
input.y:13.10-59: warning: unused value: $]3[
|
||||
input.y:13.10-59: warning: unused value: $]5[
|
||||
input.y:14.14-16: warning: unset value: $$
|
||||
input.y:14.10-47: warning: unset value: $]$[
|
||||
]]m4_ifval($2, [[[input.y:14.14-16: warning: unset value: $$
|
||||
]]])[[input.y:14.10-47: warning: unset value: $]$[
|
||||
input.y:14.10-47: warning: unused value: $]3[
|
||||
input.y:14.10-47: warning: unused value: $]5[
|
||||
input.y:15.10-36: warning: unset value: $]$[
|
||||
@@ -136,21 +138,21 @@ input.y:15.10-36: warning: unused value: $]3[
|
||||
input.y:15.10-36: warning: unused value: $]5[
|
||||
input.y:17.10-58: warning: unset value: $]$[
|
||||
input.y:17.10-58: warning: unused value: $]1[
|
||||
input.y:17.10-58: warning: unused value: $]2[
|
||||
input.y:17.10-58: warning: unused value: $]3[
|
||||
input.y:17.10-58: warning: unused value: $]4[
|
||||
input.y:17.10-58: warning: unused value: $]5[
|
||||
]]m4_ifval($2, [[[input.y:17.10-58: warning: unused value: $]2[
|
||||
]]])[[input.y:17.10-58: warning: unused value: $]3[
|
||||
]]m4_ifval($2, [[[input.y:17.10-58: warning: unused value: $]4[
|
||||
]]])[[input.y:17.10-58: warning: unused value: $]5[
|
||||
input.y:18.10-72: warning: unset value: $]$[
|
||||
input.y:18.10-72: warning: unused value: $]1[
|
||||
input.y:18.10-72: warning: unused value: $]3[
|
||||
input.y:18.10-72: warning: unused value: $]4[
|
||||
input.y:18.10-72: warning: unused value: $]5[
|
||||
input.y:20.10-55: warning: unused value: $]3[
|
||||
input.y:21.10-68: warning: unset value: $]$[
|
||||
]]m4_ifval($2, [[[input.y:18.10-72: warning: unused value: $]4[
|
||||
]]])[[input.y:18.10-72: warning: unused value: $]5[
|
||||
]]m4_ifval($2, [[[input.y:20.10-55: warning: unused value: $]3[
|
||||
]]])[[input.y:21.10-68: warning: unset value: $]$[
|
||||
input.y:21.10-68: warning: unused value: $]1[
|
||||
input.y:21.10-68: warning: unused value: $]2[
|
||||
input.y:21.10-68: warning: unused value: $]4[
|
||||
]])])
|
||||
]]m4_ifval($2, [[[input.y:21.10-68: warning: unused value: $]4[
|
||||
]]]))])
|
||||
|
||||
|
||||
## --------------- ##
|
||||
@@ -159,6 +161,7 @@ input.y:21.10-68: warning: unused value: $]4[
|
||||
|
||||
AT_SETUP([Unused values])
|
||||
AT_CHECK_UNUSED_VALUES
|
||||
AT_CHECK_UNUSED_VALUES(, [1])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
@@ -168,6 +171,7 @@ AT_CLEANUP
|
||||
|
||||
AT_SETUP([Unused values before symbol declarations])
|
||||
AT_CHECK_UNUSED_VALUES([1])
|
||||
AT_CHECK_UNUSED_VALUES([1], [1])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user