diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-08 07:07:03 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-08 07:07:03 +0000 |
commit | c186fdb90bfecb9ecc9a001796a19efca401dc4c (patch) | |
tree | 03303e152f40736509c468d6e97fef014cbf47c1 /enum.c | |
parent | cc317d920817a169a8761c9e756082bcc126a1c1 (diff) | |
download | ruby-c186fdb90bfecb9ecc9a001796a19efca401dc4c.tar.gz |
* 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
Diffstat (limited to 'enum.c')
-rw-r--r-- | enum.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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; } |