summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-enumerator
diff options
context:
space:
mode:
authorKenji Okimoto <[email protected]>2017-03-30 10:53:55 +0900
committerKenji Okimoto <[email protected]>2017-03-30 10:53:55 +0900
commitd93a5c1a8417949769714be40aaf62121059da96 (patch)
tree35ddd2f3f8076891546bd20fc502f82b985e824e /mrbgems/mruby-enumerator
parent905f46a129de65098b3130789bb9c412201f4cb4 (diff)
downloadmruby-d93a5c1a8417949769714be40aaf62121059da96.tar.gz
mruby-d93a5c1a8417949769714be40aaf62121059da96.zip
Fix Enumerator#each_with_index with block
In previous version, ``` a = [3, 2, 1] e = a.each e.sort_by(&:to_i) # => [] ``` In this version, ``` a = [3, 2, 1] e = a.each e.sort_by(&:to_i) # => [1, 2, 3] ```
Diffstat (limited to 'mrbgems/mruby-enumerator')
-rw-r--r--mrbgems/mruby-enumerator/mrblib/enumerator.rb4
-rw-r--r--mrbgems/mruby-enumerator/test/enumerator.rb7
2 files changed, 9 insertions, 2 deletions
diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb
index 89b66cd45..c7b78be5c 100644
--- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb
+++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb
@@ -177,8 +177,8 @@ class Enumerator
#
# If no block is given, a new Enumerator is returned that includes the index.
#
- def each_with_index
- with_index
+ def each_with_index(&block)
+ with_index(0, &block)
end
##
diff --git a/mrbgems/mruby-enumerator/test/enumerator.rb b/mrbgems/mruby-enumerator/test/enumerator.rb
index e86e874f0..763cd36e2 100644
--- a/mrbgems/mruby-enumerator/test/enumerator.rb
+++ b/mrbgems/mruby-enumerator/test/enumerator.rb
@@ -65,6 +65,13 @@ assert 'Enumerator#with_index string offset' do
assert_raise(TypeError){ @obj.to_enum(:foo, 1, 2, 3).with_index('1').to_a }
end
+assert 'Enumerator#each_with_index' do
+ assert_equal([[1,0],[2,1],[3,2]], @obj.to_enum(:foo, 1, 2, 3).each_with_index.to_a)
+ a = []
+ @obj.to_enum(:foo, 1, 2, 3).each_with_index {|*i| a << i}
+ assert_equal([[1, 0], [2, 1], [3, 2]], a)
+end
+
assert 'Enumerator#with_object' do
obj = [0, 1]
ret = (1..10).each.with_object(obj) {|i, memo|