summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-30 04:21:22 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-30 04:21:22 +0000
commit4ce307aeee3e89b1bec5e275b253c198d12131d3 (patch)
treef6242b7c418d227b2c8af8f263634e23d8d6423e
parent07c15e8b108bf38848d2293d5a15c40fafb37d3b (diff)
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
-rw-r--r--range.c2
-rw-r--r--test/ruby/test_range.rb8
2 files changed, 9 insertions, 1 deletions
diff --git a/range.c b/range.c
index db8e9ee..ff40b52 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 914baf9..12c0c59 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