Bug #7722 » 0002-proc.c-original-arity.patch
| proc.c | ||
|---|---|---|
|
return rb_method_entry_arity(data->me);
|
||
|
}
|
||
|
static rb_method_entry_t *
|
||
|
original_method_entry(VALUE mod, ID id)
|
||
|
{
|
||
|
VALUE rclass;
|
||
|
rb_method_entry_t *me;
|
||
|
rb_method_definition_t *def;
|
||
|
while ((def = (me = rb_method_entry(mod, id, &rclass))->def) != 0 &&
|
||
|
me->def->type == VM_METHOD_TYPE_ZSUPER) {
|
||
|
mod = RCLASS_SUPER(rclass);
|
||
|
id = me->def->original_id;
|
||
|
}
|
||
|
return me;
|
||
|
}
|
||
|
int
|
||
|
rb_mod_method_arity(VALUE mod, ID id)
|
||
|
{
|
||
|
rb_method_entry_t *me = rb_method_entry(mod, id, 0);
|
||
|
rb_method_entry_t *me = original_method_entry(mod, id);
|
||
|
return rb_method_entry_arity(me);
|
||
|
}
|
||
| test/ruby/test_marshal.rb | ||
|---|---|---|
|
end
|
||
|
end
|
||
|
class TestForRespondToZSuper < TestForRespondToFalse
|
||
|
private :respond_to?
|
||
|
end
|
||
|
def test_marshal_respond_to_arity
|
||
|
assert_nothing_raised(ArgumentError) do
|
||
|
Marshal.dump(TestForRespondToFalse.new)
|
||
|
end
|
||
|
assert_nothing_raised(ArgumentError) do
|
||
|
Marshal.dump(TestForRespondToZSuper.new)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
- « Previous
- 1
- 2
- Next »