diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2021-09-12 13:42:44 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2021-09-12 14:00:55 +0200 |
commit | b820718adf3dbb83e9f8e864d58f530fa3cb7cb6 (patch) | |
tree | 4df27d4ec36b7633f97729a5130ae22406400a1f | |
parent | 6e6e11795c63c45e22a81ee056e919f3f75e0075 (diff) | |
download | bison-b820718adf3dbb83e9f8e864d58f530fa3cb7cb6.tar.gz |
glr2.cc: don't pass %parse-param to destroy
I regret that %destructor and %printer give access to the %parse-param
in lalr1.cc, since that prevents them from being implemented as a
simple destructor and operator<<. Let's not repeat the mistake in
glr2.cc. In addition, fixes a name conflict we have currently in
tests 566 568 570 657:
calc.cc:1395:85: error: declaration shadows a field of 'calc::parser' [-Werror,-Wshadow]
void glr_state::destroy (char const* yymsg, calc::parser& yyparser, semantic_value *result, int *count, int *nerrs)
^
calc.hh:441:21: note: previous declaration is here
semantic_value *result;
^
With this commit, the whole test suite passes for glr2.cc.
* data/skeletons/glr2.cc (glr_state::destroy): Don't take the user
arguments.
-rw-r--r-- | data/skeletons/glr2.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc index a639bfe0..907abb2a 100644 --- a/data/skeletons/glr2.cc +++ b/data/skeletons/glr2.cc @@ -941,7 +941,7 @@ namespace ]b4_namespace_ref[ } void - destroy (char const *yymsg, ]b4_namespace_ref[::]b4_parser_class[& yyparser]b4_user_formals[); + destroy (char const *yymsg, ]b4_namespace_ref[::]b4_parser_class[& yyparser); /* DEBUGGING ONLY */ #if ]b4_api_PREFIX[DEBUG @@ -1630,7 +1630,7 @@ void semantic_option::setNext (const semantic_option* s) yynext = s ? asItem(this) - asItem(s) : 0; } -void glr_state::destroy (char const* yymsg, ]b4_namespace_ref[::]b4_parser_class[& yyparser]b4_user_formals[) +void glr_state::destroy (char const* yymsg, ]b4_namespace_ref[::]b4_parser_class[& yyparser) {]b4_parse_assert_if([[ check_ ();]])[ if (yyresolved) @@ -1653,7 +1653,7 @@ void glr_state::destroy (char const* yymsg, ]b4_namespace_ref[::]b4_parser_class glr_state *yyrh = yyoption.state (); for (int yyn = yyrhsLength (yyoption.yyrule); yyn > 0; yyn -= 1) { - yyrh->destroy (yymsg, yyparser]b4_user_args[); + yyrh->destroy (yymsg, yyparser); yyrh = yyrh->pred(); } } @@ -2457,7 +2457,7 @@ b4_dollar_popdef])[]dnl }]b4_locations_if([[ yyerror_range[1].getState().yyloc = yys->yyloc;]])[ if (yys->pred() != YY_NULLPTR) - yys->destroy ("Error: popping", yyparser]b4_user_args[); + yys->destroy ("Error: popping", yyparser); yystateStack.setFirstTop(yys->pred()); yystateStack.pop_back(); } @@ -2836,7 +2836,7 @@ b4_dollar_popdef])[]dnl glr_state* state = topState(k);]b4_locations_if([[ yyerror_range[1].getState().yyloc = state->yyloc;]])[ if (state->pred() != YY_NULLPTR) - state->destroy ("Cleanup: popping", yyparser]b4_user_args[); + state->destroy ("Cleanup: popping", yyparser); yystateStack.setTopAt(k, state->pred()); yystateStack.pop_back(); } @@ -2996,7 +2996,7 @@ b4_dollar_popdef])[]dnl if (yyflag != yyok) { for (glr_state *yys = yyoptState; yynrhs > 0; yys = yys->pred(), yynrhs -= 1) - yys->destroy ("Cleanup: popping", yyparser]b4_user_args[); + yys->destroy ("Cleanup: popping", yyparser); return yyflag; } |