зеркало из https://github.com/github/ruby.git
* proc.c (proc_arity): fix an arity bug ([ruby-core:11060]).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
75d28f8870
Коммит
f80841275d
|
@ -1,3 +1,7 @@
|
|||
Tue May 1 13:59:18 2007 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* proc.c (proc_arity): fix an arity bug ([ruby-core:11060]).
|
||||
|
||||
Tue May 1 13:12:49 2007 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* yarvcore.h, compile.c (set_arguments): support post arguments.
|
||||
|
|
11
proc.c
11
proc.c
|
@ -443,7 +443,8 @@ proc_arity(VALUE self)
|
|||
rb_iseq_t *iseq;
|
||||
GetProcPtr(self, proc);
|
||||
iseq = proc->block.iseq;
|
||||
if (iseq && BUILTIN_TYPE(iseq) != T_NODE) {
|
||||
if (iseq) {
|
||||
if (BUILTIN_TYPE(iseq) != T_NODE) {
|
||||
if (iseq->arg_rest < 0) {
|
||||
return INT2FIX(iseq->argc);
|
||||
}
|
||||
|
@ -452,9 +453,15 @@ proc_arity(VALUE self)
|
|||
}
|
||||
}
|
||||
else {
|
||||
return INT2FIX(-1);
|
||||
NODE *node = (NODE *)iseq;
|
||||
if (nd_type(node) == NODE_IFUNC && node->nd_cfnc == bmcall) {
|
||||
/* method(:foo).to_proc.arity */
|
||||
return INT2FIX(method_arity(node->nd_tval));
|
||||
}
|
||||
}
|
||||
}
|
||||
return INT2FIX(-1);
|
||||
}
|
||||
|
||||
int
|
||||
rb_proc_arity(VALUE proc)
|
||||
|
|
Загрузка…
Ссылка в новой задаче