Reuse `rb_proc_arity`

This commit is contained in:
S.H 2022-04-25 06:06:45 +09:00 committed by GitHub
parent 84f410e5e6
commit 554befbf27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
Notes: git 2022-04-25 06:07:25 +09:00
Merged: https://github.com/ruby/ruby/pull/5823

Merged-By: jeremyevans <code@jeremyevans.net>
1 changed files with 2 additions and 7 deletions

9
proc.c
View File

@ -1208,21 +1208,16 @@ rb_block_arity(void)
}
block_setup(&block, block_handler);
min = rb_vm_block_min_max_arity(&block, &max);
switch (vm_block_type(&block)) {
case block_handler_type_symbol:
return -1;
case block_handler_type_proc:
{
VALUE procval = block_handler;
rb_proc_t *proc;
GetProcPtr(procval, proc);
return (proc->is_lambda ? min == max : max != UNLIMITED_ARGUMENTS) ? min : -min-1;
}
return rb_proc_arity(block_handler);
default:
min = rb_vm_block_min_max_arity(&block, &max);
return max != UNLIMITED_ARGUMENTS ? min : -min-1;
}
}