summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/class.c11
-rw-r--r--test/t/kernel.rb7
2 files changed, 15 insertions, 3 deletions
diff --git a/src/class.c b/src/class.c
index d0063529d..7f53b7a2b 100644
--- a/src/class.c
+++ b/src/class.c
@@ -1052,8 +1052,14 @@ mrb_obj_respond_to(struct RClass* c, mrb_sym mid)
if (h) {
k = kh_get(mt, h, mid);
- if (k != kh_end(h))
- return 1; /* exist method */
+ if (k != kh_end(h)) {
+ if (kh_value(h, k)) {
+ return 1; /* exist method */
+ }
+ else {
+ return 0;
+ }
+ }
}
c = c->super;
}
@@ -1444,4 +1450,5 @@ mrb_init_class(mrb_state *mrb)
mrb_define_method(mrb, mod, "===", mrb_mod_eqq, ARGS_REQ(1));
mrb_undef_method(mrb, cls, "append_features");
+ mrb_undef_method(mrb, cls, "extend_object");
}
diff --git a/test/t/kernel.rb b/test/t/kernel.rb
index da818778a..b96e85134 100644
--- a/test/t/kernel.rb
+++ b/test/t/kernel.rb
@@ -304,7 +304,12 @@ assert('Kernel#raise', '15.3.1.3.40') do
end
assert('Kernel#respond_to?', '15.3.1.3.43') do
- respond_to? :nil?
+ class Test4RespondTo
+ def test_method; end
+ undef test_method
+ end
+
+ respond_to?(:nil?) and Test4RespondTo.new.respond_to?(:test_method) == false
end
assert('Kernel#send', '15.3.1.3.44') do