@@ -2921,6 +2921,28 @@ rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
29212921 }
29222922 ;
29232923
2924+ %rule args_tail_basic(value) <node_args>
2925+ : f_kwarg(value) ',' f_kwrest opt_f_block_arg
2926+ {
2927+ $$ = new_args_tail(p, $1, $3, $4, &@3);
2928+ /*% ripper: [$:1, $:3, $:4] %*/
2929+ }
2930+ | f_kwarg(value) opt_f_block_arg
2931+ {
2932+ $$ = new_args_tail(p, $1, 0, $2, &@1);
2933+ /*% ripper: [$:1, Qnil, $:2] %*/
2934+ }
2935+ | f_any_kwrest opt_f_block_arg
2936+ {
2937+ $$ = new_args_tail(p, 0, $1, $2, &@1);
2938+ /*% ripper: [Qnil, $:1, $:2] %*/
2939+ }
2940+ | f_block_arg
2941+ {
2942+ $$ = new_args_tail(p, 0, 0, $1, &@1);
2943+ /*% ripper: [Qnil, Qnil, $:1] %*/
2944+ }
2945+
29242946%rule def_endless_method(bodystmt) <node>
29252947 : defn_head[head] f_opt_paren_args[args] '=' bodystmt
29262948 {
@@ -4932,26 +4954,7 @@ f_any_kwrest : f_kwrest
49324954
49334955f_eq : {p->ctxt.in_argdef = 0;} '=';
49344956
4935- block_args_tail : f_kwarg(primary_value) ',' f_kwrest opt_f_block_arg
4936- {
4937- $$ = new_args_tail(p, $1, $3, $4, &@3);
4938- /*% ripper: [$:1, $:3, $:4] %*/
4939- }
4940- | f_kwarg(primary_value) opt_f_block_arg
4941- {
4942- $$ = new_args_tail(p, $1, 0, $2, &@1);
4943- /*% ripper: [$:1, Qnil, $:2] %*/
4944- }
4945- | f_any_kwrest opt_f_block_arg
4946- {
4947- $$ = new_args_tail(p, 0, $1, $2, &@1);
4948- /*% ripper: [Qnil, $:1, $:2] %*/
4949- }
4950- | f_block_arg
4951- {
4952- $$ = new_args_tail(p, 0, 0, $1, &@1);
4953- /*% ripper: [Qnil, Qnil, $:1] %*/
4954- }
4957+ block_args_tail : args_tail_basic(primary_value)
49554958 ;
49564959
49574960excessed_comma : ','
@@ -6295,26 +6298,7 @@ f_arglist : f_paren_args
62956298 }
62966299 ;
62976300
6298- args_tail : f_kwarg(arg_value) ',' f_kwrest opt_f_block_arg
6299- {
6300- $$ = new_args_tail(p, $1, $3, $4, &@3);
6301- /*% ripper: [$:1, $:3, $:4] %*/
6302- }
6303- | f_kwarg(arg_value) opt_f_block_arg
6304- {
6305- $$ = new_args_tail(p, $1, 0, $2, &@1);
6306- /*% ripper: [$:1, Qnil, $:2] %*/
6307- }
6308- | f_any_kwrest opt_f_block_arg
6309- {
6310- $$ = new_args_tail(p, 0, $1, $2, &@1);
6311- /*% ripper: [Qnil, $:1, $:2] %*/
6312- }
6313- | f_block_arg
6314- {
6315- $$ = new_args_tail(p, 0, 0, $1, &@1);
6316- /*% ripper: [Qnil, Qnil, $:1] %*/
6317- }
6301+ args_tail : args_tail_basic(arg_value)
63186302 | args_forward
63196303 {
63206304 ID fwd = $args_forward;
0 commit comments