diff --git a/mrblib/array.rb b/mrblib/array.rb index d151d9350..76c137421 100644 --- a/mrblib/array.rb +++ b/mrblib/array.rb @@ -193,7 +193,7 @@ class Array def delete(key, &block) len = self.length ret = self.__delete(key) - return block&.call() if len == self.length + return block&.call(key) if len == self.length ret end diff --git a/test/t/array.rb b/test/t/array.rb index eccb435ef..b40c03dd7 100644 --- a/test/t/array.rb +++ b/test/t/array.rb @@ -445,3 +445,16 @@ assert('Array#freeze') do a[0] = 1 end end + +assert('Array#delete') do + a = ["a", "b", "c"] + assert_equal nil, a.delete("x") + assert_equal "x", a.delete("x") { _1 } + assert_equal ["a", "b", "c"], a + assert_equal "a", a.delete("a") + assert_equal ["b", "c"], a + + a = [nil] + assert_equal nil, a.delete(nil) { "?" } + assert_equal [], a +end