Feature #5072 » 0002-Fix-handling-of-respond_to_missing-after-r32621.patch
test/ruby/test_object.rb | ||
---|---|---|
assert_nothing_raised(bug2494) {[b].flatten}
|
||
end
|
||
def test_respond_to_missing_string
|
||
c = Class.new do
|
||
def respond_to_missing?(id, priv)
|
||
!(id !~ /\Agadzoks\d+\z/) ^ priv
|
||
end
|
||
end
|
||
foo = c.new
|
||
assert_equal(false, foo.respond_to?("gadzooks16"))
|
||
assert_equal(true, foo.respond_to?("gadzooks17", true))
|
||
assert_equal(true, foo.respond_to?("gadzoks16"))
|
||
assert_equal(false, foo.respond_to?("gadzoks17", true))
|
||
end
|
||
def test_respond_to_missing
|
||
c = Class.new do
|
||
def respond_to_missing?(id, priv)
|
vm_method.c | ||
---|---|---|
rb_scan_args(argc, argv, "11", &mid, &priv);
|
||
if (!(id = rb_check_id(mid)))
|
||
return Qfalse;
|
||
if (rb_method_basic_definition_p(CLASS_OF(obj), respond_to_missing)) {
|
||
return Qfalse;
|
||
} else {
|
||
return rb_funcall(obj, respond_to_missing, 2, ID2SYM(rb_to_id(mid)), RTEST(priv) ? Qtrue : Qfalse);
|
||
}
|
||
if (basic_obj_respond_to(obj, id, !RTEST(priv)))
|
||
return Qtrue;
|
||
return Qfalse;
|
- « Previous
- 1
- 2
- 3
- Next »