mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 21:49:06 +02:00
* enumerator.c (enumerator_next_p): should check correctly even when
e.next has not been called before. * enumerator.c (enumerator_next): raise StopIteration (name taken from Python) instead of IndexError. * enum.c (enum_zip): catch StopIteration exception. * enumerator.c (enumerator_with_index): return Enumerator if no block is given. * test/ruby/test_iterator.rb (TestIterator::test_enumerator): add test for enumerators. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
cc317d9208
commit
c186fdb90b
5 changed files with 68 additions and 14 deletions
2
enum.c
2
enum.c
|
@ -1411,7 +1411,7 @@ enum_zip(int argc, VALUE *argv, VALUE obj)
|
|||
RETURN_ENUMERATOR(obj, argc, argv);
|
||||
result = rb_block_given_p() ? Qnil : rb_ary_new();
|
||||
memo = rb_node_newnode(NODE_MEMO, result, rb_ary_new4(argc, argv), obj);
|
||||
rb_rescue2(zip_b, (VALUE)memo, 0, 0, rb_eIndexError, (VALUE)0);
|
||||
rb_rescue2(zip_b, (VALUE)memo, 0, 0, rb_eStopIteration, (VALUE)0);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue