From 4ce307aeee3e89b1bec5e275b253c198d12131d3 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 30 Nov 2013 04:21:22 +0000 Subject: [PATCH] range.c: revert the old behavior * range.c (range_each): revert the old behavior, no block is given to the yielded block. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 2 +- test/ruby/test_range.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/range.c b/range.c index db8e9ee306..ff40b52d93 100644 --- a/range.c +++ b/range.c @@ -796,7 +796,7 @@ range_each(VALUE range) args[0] = end; args[1] = EXCL(range) ? Qtrue : Qfalse; - rb_block_call(tmp, rb_intern("upto"), 2, args, rb_yield_block, 0); + rb_block_call(tmp, rb_intern("upto"), 2, args, each_i, 0); } else { if (!discrete_object_p(beg)) { diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index 914baf9ecf..12c0c59605 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -558,4 +558,12 @@ class TestRange < Test::Unit::TestCase assert_equal(42, answer, msg) } end + + def test_each_no_blockarg + a = "a" + def a.upto(x, e, &b) + super {|y| b.call(y) {|z| assert(false)}} + end + (a.."c").each {|x, &b| assert_nil(b)} + end end