mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
muscle: enforce definition syntax for keyword variables
* src/muscle-tab.c (muscle_percent_define_get_kind) (muscle_percent_define_check_kind): New. (muscle_percent_define_default): Variables with a default value are of "keyword" kind. (muscle_percent_define_flag_if, muscle_percent_define_check_values): Check that the variable is of keyword kind. * data/bison.m4: Likewise, but in M4. That is to say... (b4_percent_define_default): Define the kind when the variable is undefined. (b4_percent_define_check_kind): Use a better error message. (_b4_percent_define_check_values, _b4_percent_define_check_values): Former "enum" variables should be defined using the keyword syntax. * doc/bison.texi: Update. A couple of fixes. * tests/input.at (%define keyword variables): New.
This commit is contained in:
@@ -1463,6 +1463,39 @@ m4_popdef([AT_TEST])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## --------------------------- ##
|
||||
## %define keyword variables. ##
|
||||
## --------------------------- ##
|
||||
|
||||
AT_SETUP([["%define" keyword variables]])
|
||||
|
||||
m4_pushdef([AT_TEST],
|
||||
[AT_DATA([input.y],
|
||||
[[%define api.pure ]$1[true]$2[
|
||||
%define api.push-pull ]$1[both]$2[
|
||||
%define lr.default-reduction ]$1[most]$2[
|
||||
%define lr.keep-unreachable-state ]$1[true]$2[
|
||||
%define lr.type ]$1[lalr]$2[
|
||||
%%
|
||||
exp: %empty
|
||||
]])
|
||||
|
||||
AT_BISON_CHECK([[input.y]], [0], [],
|
||||
[[input.y:5.9-15: warning: %define variable 'lr.type' requires keyword values [-Wdeprecated]
|
||||
input.y:3.9-28: warning: %define variable 'lr.default-reduction' requires keyword values [-Wdeprecated]
|
||||
input.y:4.9-33: warning: %define variable 'lr.keep-unreachable-state' requires keyword values [-Wdeprecated]
|
||||
input.y:2.9-21: warning: %define variable 'api.push-pull' requires keyword values [-Wdeprecated]
|
||||
input.y:1.9-16: warning: %define variable 'api.pure' requires keyword values [-Wdeprecated]
|
||||
]])
|
||||
])
|
||||
|
||||
AT_TEST(["], ["])
|
||||
AT_TEST([{], [}])
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## ------------------------ ##
|
||||
## %define enum variables. ##
|
||||
## ------------------------ ##
|
||||
|
||||
Reference in New Issue
Block a user