From 770128ade36db597395630f861fd9d801428ef2b Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 9 Nov 2014 14:58:33 +0000 Subject: [PATCH] test_bmethod.rb: block in bmethod test * test/-ext-/proc/test_bmethod.rb (test_super_in_bmethod): block in bmethod test for [Feature #10195]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/-test-/proc/call_super.c | 9 +++++++-- test/-ext-/proc/test_bmethod.rb | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ext/-test-/proc/call_super.c b/ext/-test-/proc/call_super.c index c5cb3eb46a..c1f3088531 100644 --- a/ext/-test-/proc/call_super.c +++ b/ext/-test-/proc/call_super.c @@ -1,12 +1,17 @@ #include "ruby.h" static VALUE -bug_proc_call_super(VALUE yieldarg, VALUE procarg) +bug_proc_call_super(RB_BLOCK_CALL_FUNC_ARGLIST(yieldarg, procarg)) { VALUE args[2]; + VALUE ret; args[0] = yieldarg; args[1] = procarg; - return rb_call_super(2, args); + ret = rb_call_super(2, args); + if (!NIL_P(blockarg)) { + ret = rb_proc_call(blockarg, ret); + } + return ret; } static VALUE diff --git a/test/-ext-/proc/test_bmethod.rb b/test/-ext-/proc/test_bmethod.rb index 09f52140b9..2d68adc1b9 100644 --- a/test/-ext-/proc/test_bmethod.rb +++ b/test/-ext-/proc/test_bmethod.rb @@ -21,4 +21,11 @@ class TestProc::TestBMethod obj = Bound.new assert_equal([1, 42], obj.foo(1)) end + + def test_block_super + obj = Bound.new + result = nil + obj.foo(2) {|*a| result = a} + assert_equal([2, 42], result) + end end