aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-10-25 00:06:43 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-10-25 00:15:39 +0900
commit6279e45cdefa3e61ca1c9c8085b15727cb2f4a60 (patch)
tree04a01ef76bfdb52b03e9614d0a6ce0859ebd2d8e /parse.y
parent1fb45848257e3a599809c6cac52338999e604da0 (diff)
downloadruby-6279e45cdefa3e61ca1c9c8085b15727cb2f4a60.tar.gz
Arguments forwarding is not allowed in lambda [Feature #16253]
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y24
1 files changed, 13 insertions, 11 deletions
diff --git a/parse.y b/parse.y
index 657e521982..c3e385e0af 100644
--- a/parse.y
+++ b/parse.y
@@ -4781,6 +4781,19 @@ f_arglist : '(' f_args rparen
SET_LEX_STATE(EXPR_BEG);
p->command_start = TRUE;
}
+ | '(' args_forward rparen
+ {
+ arg_var(p, idFWD_REST);
+ arg_var(p, idFWD_KWREST);
+ arg_var(p, idFWD_BLOCK);
+ /*%%%*/
+ $$ = new_args_tail(p, Qnone, idFWD_KWREST, idFWD_BLOCK, &@2);
+ $$ = new_args(p, Qnone, Qnone, idFWD_REST, Qnone, $$, &@2);
+ /*% %*/
+ /*% ripper: paren!(params_new(Qnone, Qnone, $2, Qnone, Qnone, Qnone, Qnone)) %*/
+ SET_LEX_STATE(EXPR_BEG);
+ p->command_start = TRUE;
+ }
| {
$<num>$ = p->in_kwarg;
p->in_kwarg = 1;
@@ -4883,17 +4896,6 @@ f_args : f_arg ',' f_optarg ',' f_rest_arg opt_args_tail
{
$$ = new_args(p, Qnone, Qnone, Qnone, Qnone, $1, &@$);
}
- | args_forward
- {
- arg_var(p, idFWD_REST);
- arg_var(p, idFWD_KWREST);
- arg_var(p, idFWD_BLOCK);
- /*%%%*/
- $$ = new_args_tail(p, Qnone, idFWD_KWREST, idFWD_BLOCK, &@1);
- $$ = new_args(p, Qnone, Qnone, idFWD_REST, Qnone, $$, &@$);
- /*% %*/
- /*% ripper: params_new(Qnone, Qnone, $1, Qnone, Qnone, Qnone, Qnone) %*/
- }
| /* none */
{
$$ = new_args_tail(p, Qnone, Qnone, Qnone, &@0);