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:
parent
a4665e30f7
commit
8ca504214d
3 changed files with 16 additions and 0 deletions
|
@ -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.
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue