mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
fixits: be sure to preserve the action when adding %empty
Currently we remove the rhs to install %empty instead. * src/reader.c (grammar_rule_check_and_complete): Insert the missing %empty in front of the rhs, not in replacement thereof. * tests/actions.at (Add missing %empty): Check that.
This commit is contained in:
@@ -357,9 +357,10 @@ grammar_rule_check_and_complete (symbol_list *r)
|
||||
&& !r->percent_empty_loc.start.file
|
||||
&& warning_is_enabled (Wempty_rule))
|
||||
{
|
||||
complain (&r->rhs_loc, Wempty_rule,
|
||||
_("empty rule without %%empty"));
|
||||
fixits_register (&r->rhs_loc, " %empty ");
|
||||
complain (&r->rhs_loc, Wempty_rule, _("empty rule without %%empty"));
|
||||
location loc = r->rhs_loc;
|
||||
loc.end = loc.start;
|
||||
fixits_register (&loc, " %empty ");
|
||||
}
|
||||
|
||||
/* See comments in grammar_current_rule_prec_set for how POSIX
|
||||
|
||||
@@ -259,6 +259,46 @@ AT_BISON_OPTION_POPDEFS
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
|
||||
## -------------------- ##
|
||||
## Add missing %empty. ##
|
||||
## -------------------- ##
|
||||
|
||||
AT_SETUP([Add missing %empty])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%%
|
||||
exp: a b c d e
|
||||
a: {}
|
||||
b:{
|
||||
};
|
||||
c:
|
||||
d
|
||||
:
|
||||
e:
|
||||
%%
|
||||
]])
|
||||
|
||||
AT_BISON_CHECK([--update -Wall input.y], [], [], [ignore])
|
||||
AT_CHECK([cat input.y], [],
|
||||
[[%%
|
||||
exp: a b c d e
|
||||
a: %empty {}
|
||||
b: %empty {
|
||||
};
|
||||
c: %empty @&t@
|
||||
d
|
||||
: %empty @&t@
|
||||
e: %empty @&t@
|
||||
%%
|
||||
]])
|
||||
|
||||
# No warnings.
|
||||
AT_BISON_CHECK([-Wall input.y])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## ------------------ ##
|
||||
## Initial location. ##
|
||||
## ------------------ ##
|
||||
|
||||
Reference in New Issue
Block a user