summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-enumerator
diff options
context:
space:
mode:
authorksss <[email protected]>2014-03-14 23:51:39 +0900
committerksss <[email protected]>2014-03-15 08:15:16 +0900
commit47fc784b567d58c48ad1f018e3b56926acd76725 (patch)
tree6aa1d15e1eec37cf243cd6850385eb6284717163 /mrbgems/mruby-enumerator
parentbc63518fa7fba78531b6ab1fbb42895b1f834423 (diff)
downloadmruby-47fc784b567d58c48ad1f018e3b56926acd76725.tar.gz
mruby-47fc784b567d58c48ad1f018e3b56926acd76725.zip
fix return value for with_index
Diffstat (limited to 'mrbgems/mruby-enumerator')
-rw-r--r--mrbgems/mruby-enumerator/mrblib/enumerator.rb6
-rw-r--r--mrbgems/mruby-enumerator/test/enumerator.rb9
2 files changed, 12 insertions, 3 deletions
diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb
index 02d88a9e5..8641d99e0 100644
--- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb
+++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb
@@ -156,10 +156,10 @@ class Enumerator
return to_enum :with_index, offset unless block_given?
raise TypeError, "no implicit conversion of #{offset.class} into Integer" unless offset.respond_to?(:to_int)
- n = offset.to_int
- each do |i|
- yield [i,n]
+ n = offset.to_int - 1
+ enumerator_block_call do |i|
n += 1
+ yield [i,n]
end
end
diff --git a/mrbgems/mruby-enumerator/test/enumerator.rb b/mrbgems/mruby-enumerator/test/enumerator.rb
index c790c1367..bbb22ee6d 100644
--- a/mrbgems/mruby-enumerator/test/enumerator.rb
+++ b/mrbgems/mruby-enumerator/test/enumerator.rb
@@ -396,3 +396,12 @@ assert 'modifying existing methods' do
assert_equal Enumerator, {a:1}.each.class
assert_equal Enumerator, (1..5).each.class
end
+
+assert 'Array#map!' do
+ a = [1,2,3]
+ b = a.map!
+ b.with_index do |i, index|
+ [i*i, index*index]
+ end
+ assert_equal [[1,0],[4,1],[9,4]], a
+end