From: Chris Pine Date: 2003-01-03T09:56:18+09:00 Subject: Re: How to call overridden methods (finally!) BTW, is it a bug in UnboundMethod#bind that the following doesn't work? class Base; def foo; puts "Base#foo"; end; end; class Derived < Base; end d = Derived.new Base.instance_method(:foo).bind(d).call() If I change line 6709 of eval.c from: if (!((TYPE(data->oklass) == T_MODULE) ? rb_obj_is_kind_of(recv, data->oklass) : rb_obj_is_instance_of(recv, data->oklass))) { to: if(!rb_obj_is_kind_of(recv, data->oklass)) { then the above works, and doesn't appear to have any odd behavior. ?!? Why is it this way?? This seems intentionally complicated and counter-intuitive. This is the only thing I miss from C++: being able to specify "where a method comes from" (using the scope operator in C++, but I don't care *how* to do it as long as I *can* do it). Chris