From: "hasari (Hiro Asari)" Date: 2012-11-26T13:21:15+09:00 Subject: [ruby-core:50146] [ruby-trunk - Bug #7437] Array#delete(obj) should return obj when there is an object that is equal in the array Issue #7437 has been updated by hasari (Hiro Asari). File ruby-7437.patch added Here's the patch. Where should the tests go? RubySpec? ---------------------------------------- Bug #7437: Array#delete(obj) should return obj when there is an object that is equal in the array https://bugs.ruby-lang.org/issues/7437#change-33935 Author: hasari (Hiro Asari) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-11-25 trunk 37839) [x86_64-darwin12.2.1] According to http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-delete, Array#delete(obj) should return "obj" when there are objects in the array that are "equal to obj" (internally, "==" is used, it seems). Notice that the documentation does not state that the return value is an element of the array itself. However, 1.9.3 and trunk both return a member of the Array, rather than the argument. This issue was raised in https://github.com/jruby/jruby/issues/411 #!/usr/bin/env ruby class Foo attr_reader :name, :age def initialize name, age @name = name @age = age end def == other other.name == name end end foo1 = Foo.new "John Shahid", 27 foo2 = Foo.new "John Shahid", 28 array = [foo1] temp = array.delete foo2 # => foo1, not foo2 -- http://bugs.ruby-lang.org/