mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-16 15:53:03 +00:00
rule actions cannot be typed
Make sure that we cannot apply a type to the (main) action of a rule. * src/reader.c (grammar_rule_check): Issue the warning. * tests/input.at (Cannot type action): Check the warning.
This commit is contained in:
@@ -351,6 +351,11 @@ grammar_rule_check (const symbol_list *r)
|
|||||||
&& !r->ruleprec->content->prec)
|
&& !r->ruleprec->content->prec)
|
||||||
complain (&r->location, Wother,
|
complain (&r->location, Wother,
|
||||||
_("token for %%prec is not defined: %s"), r->ruleprec->tag);
|
_("token for %%prec is not defined: %s"), r->ruleprec->tag);
|
||||||
|
|
||||||
|
/* Check that the (main) action was not typed. */
|
||||||
|
if (r->action_props.type)
|
||||||
|
complain (&r->location, Wother,
|
||||||
|
_("only midrule actions can be typed: %s"), r->action_props.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2193,7 +2193,7 @@ input.y:13.11-21: previous definition
|
|||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
##--------------------------- ##
|
## -------------------------- ##
|
||||||
## Non-deprecated directives. ##
|
## Non-deprecated directives. ##
|
||||||
## -------------------------- ##
|
## -------------------------- ##
|
||||||
|
|
||||||
@@ -2224,3 +2224,23 @@ AT_BISON_CHECK([[input.y]], [[0]], [[]],
|
|||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|
||||||
|
## -------------------- ##
|
||||||
|
## Cannot type action. ##
|
||||||
|
## -------------------- ##
|
||||||
|
|
||||||
|
AT_SETUP([[Cannot type action]])
|
||||||
|
|
||||||
|
AT_DATA_GRAMMAR([[input.y]],
|
||||||
|
[[%%
|
||||||
|
exp: <int> {}
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_BISON_CHECK([[-fcaret input.y]], [[0]], [[]],
|
||||||
|
[[input.y:10.6-13: warning: only midrule actions can be typed: int [-Wother]
|
||||||
|
exp: <int> {}
|
||||||
|
^^^^^^^^
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_CLEANUP
|
||||||
|
|||||||
Reference in New Issue
Block a user