1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* enumerator.c: Require block for Lazy#{take|drop}_while [Bug #7692]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
marcandre 2013-01-14 07:42:43 +00:00
parent a4665e30f7
commit 8ca504214d
3 changed files with 16 additions and 0 deletions

View file

@ -1,3 +1,7 @@
Mon Jan 14 16:42:28 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
* enumerator.c: Require block for Lazy#{take|drop}_while [Bug #7692]
Mon Jan 14 14:41:00 2013 Kenta Murata <mrkn@mrkn.jp>
* ext/bigdecimal/bigdecimal.c (BigDecimal_to_s): use CRuby style.

View file

@ -1678,6 +1678,9 @@ lazy_take_while_func(VALUE val, VALUE args, int argc, VALUE *argv)
static VALUE
lazy_take_while(VALUE obj)
{
if (!rb_block_given_p()) {
rb_raise(rb_eArgError, "tried to call lazy take_while without a block");
}
return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
lazy_take_while_func, 0),
Qnil, 0);
@ -1745,6 +1748,9 @@ lazy_drop_while(VALUE obj)
{
NODE *memo;
if (!rb_block_given_p()) {
rb_raise(rb_eArgError, "tried to call lazy drop_while without a block");
}
memo = NEW_MEMO(0, 0, FALSE);
return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
lazy_drop_while_func, (VALUE) memo),

View file

@ -363,4 +363,10 @@ EOS
assert_ruby_status(["-e", "GC.stress = true", "-e", "(1..10).lazy.map{}.zip(){}"], bug7507)
assert_ruby_status(["-e", "GC.stress = true", "-e", "(1..10).lazy.map{}.zip().to_a"], bug7507)
end
def test_require_block
%i[select reject drop_while take_while].each do |method|
assert_raise(ArgumentError){ [].lazy.send(method) }
end
end
end