Revision: 3949 http://trac.macosforge.org/projects/ruby/changeset/3949 Author: martinlagardette@apple.com Date: 2010-04-20 20:51:32 -0700 (Tue, 20 Apr 2010) Log Message: ----------- Forward the block when forwarding a ruby method call from NSString to RubyString Modified Paths: -------------- MacRuby/trunk/NSString.m MacRuby/trunk/spec/macruby/core/string_spec.rb Modified: MacRuby/trunk/NSString.m =================================================================== --- MacRuby/trunk/NSString.m 2010-04-21 02:29:46 UTC (rev 3948) +++ MacRuby/trunk/NSString.m 2010-04-21 03:51:32 UTC (rev 3949) @@ -173,14 +173,17 @@ static VALUE nsstr_forward(id rcv, SEL sel, int argc, VALUE *argv) { - return rb_vm_call(nsstr_to_rstr(rcv), sel, argc, argv, false); + return rb_vm_call_with_cache2(rb_vm_get_call_cache(sel), + rb_vm_current_block(), nsstr_to_rstr(rcv), rb_cRubyString, sel, argc, + argv); } static VALUE nsstr_forward_bang(id rcv, SEL sel, int argc, VALUE *argv) { VALUE rcv_rstr = nsstr_to_rstr(rcv); - VALUE ret = rb_vm_call(rcv_rstr, sel, argc, argv, false); + VALUE ret = rb_vm_call_with_cache2(rb_vm_get_call_cache(sel), + rb_vm_current_block(), rcv_rstr, rb_cRubyString, sel, argc, argv); [rcv setString:(id)rcv_rstr]; return ret; } Modified: MacRuby/trunk/spec/macruby/core/string_spec.rb =================================================================== --- MacRuby/trunk/spec/macruby/core/string_spec.rb 2010-04-21 02:29:46 UTC (rev 3948) +++ MacRuby/trunk/spec/macruby/core/string_spec.rb 2010-04-21 03:51:32 UTC (rev 3949) @@ -81,4 +81,8 @@ # TODO #lambda { a << 'foo' }.should raise_error(RuntimeError) end + + it "forwards the block when calling a ruby method" do + NSString.stringWithString("ybuRcaM").sub(/.+/) { |s| s.reverse }.should == "MacRuby" + end end