diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2024-02-20 19:34:50 +0900 |
|---|---|---|
| committer | Kevin Newton <kddnewton@gmail.com> | 2026-02-15 14:12:15 -0500 |
| commit | 116d402067c1d01ed67b16ec93fb523bd5109d07 (patch) | |
| tree | 9ed0f81052e64934218586ae691dd4d2d1fbec8d /parse.y | |
| parent | 2065b55980a0fc6386d58e4ede37d60c50e5b62f (diff) | |
[Feature #19979] Method definition with `&nil`
Allow methods to declare that they don't accept a block via `&nil`.
Diffstat (limited to 'parse.y')
| -rw-r--r-- | parse.y | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -6562,6 +6562,11 @@ f_block_arg : blkarg_mark tIDENTIFIER $$ = $2; /*% ripper: blockarg!($:2) %*/ } + | blkarg_mark keyword_nil + { + $$ = idNil; + /*% ripper: blockarg!(ID2VAL(idNil)) %*/ + } | blkarg_mark { arg_var(p, idFWD_BLOCK); @@ -14474,6 +14479,10 @@ new_args_tail(struct parser_params *p, rb_node_kw_arg_t *kw_args, ID kw_rest_arg struct rb_args_info *args = &node->nd_ainfo; if (p->error_p) return node; + if (block == idNil) { + block = 0; + args->no_blockarg = TRUE; + } args->block_arg = block; args->kw_args = kw_args; |
