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; }; + ^^^ +]]) ]) ## --------------- ##