summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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