From f18f71cfb077d594b0ef3e9d1ec39aedead38c7b Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 5 Aug 2018 10:18:52 +0200 Subject: [PATCH] warn about typed mid-rule actions in Yacc mode * src/reader.c (grammar_current_rule_action_append): Warn. * tests/input.at (AT_CHECK_UNUSED_VALUES): Check. --- src/reader.c | 3 +++ tests/input.at | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/reader.c b/src/reader.c index 52cff91b..2c7fecae 100644 --- a/src/reader.c +++ b/src/reader.c @@ -528,6 +528,9 @@ grammar_current_rule_action_append (const char *action, location loc, { if (current_rule->action_props.code) grammar_midrule_action (); + if (type) + complain (&loc, Wyacc, + _("POSIX Yacc does not support typed midrule actions")); /* After all symbol declarations have been parsed, packgram invokes code_props_translate_code. */ code_props_rule_action_init (¤t_rule->action_props, action, loc, diff --git a/tests/input.at b/tests/input.at index 037a9afe..44be3942 100644 --- a/tests/input.at +++ b/tests/input.at @@ -343,6 +343,28 @@ input.y:26.40-42: warning: unset value: $][$ [-Wother] o: INT | INT { } INT { } INT { $][$ = $][1 + $][2 + $][3 + $][4 + $][5; }; ^^^ ]]) + +AT_BISON_CHECK([-Wnone,yacc -fcaret input.y], + [0], [], +[[input.y:24.23-34: warning: POSIX Yacc does not support typed midrule actions [-Wyacc] + m: INT | INT { $][$ = $][1; } INT { $][$ = $][2 + $][3; } INT { $][$ = $][4 + $][5; }; + ^^^^^^^^^^^^ +input.y:24.49-65: warning: POSIX Yacc does not support typed midrule actions [-Wyacc] + m: INT | INT { $][$ = $][1; } INT { $][$ = $][2 + $][3; } INT { $][$ = $][4 + $][5; }; + ^^^^^^^^^^^^^^^^^ +input.y:25.23-25: warning: POSIX Yacc does not support typed midrule actions [-Wyacc] + n: INT | INT { } INT { } INT { }; + ^^^ +input.y:25.40-42: warning: POSIX Yacc does not support typed midrule actions [-Wyacc] + n: INT | INT { } INT { } INT { }; + ^^^ +input.y:26.23-25: warning: POSIX Yacc does not support typed midrule actions [-Wyacc] + o: INT | INT { } INT { } INT { $][$ = $][1 + $][2 + $][3 + $][4 + $][5; }; + ^^^ +input.y:26.40-42: warning: POSIX Yacc does not support typed midrule actions [-Wyacc] + o: INT | INT { } INT { } INT { $][$ = $][1 + $][2 + $][3 + $][4 + $][5; }; + ^^^ +]]) ]) ## --------------- ##