Issue #5922 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to matz (Yukihiro Matsumoto)


----------------------------------------
Feature #5922: Migrate equal? to identical?
https://bugs.ruby-lang.org/issues/5922#change-25431

Author: trans (Thomas Sawyer)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: 
Target version: 2.0.0


From Ruby docs: "the equal? method should never be overridden by subclasses: it is used to determine object identity (that is, a.equal?(b) iff a is the same object as b)."

I think it would make more sense to name such a method `#identical?`, since that is what it is doing --*comparing identity*. Over a sufficient period of time the current use of `#equal?` can be deprecated and possibly made better use of with a different definition. I realize this is not a minor change. This transition would probably be much like the one from #id to #object_id.

The reason I propose this, and why it is an issue for myself, is in of the design of assertion frameworks. For example, #assert_equal is a comparison of #==, not #equal?. We run into this naming conundrum and end up having to use assertion names that don't correspond well to the names of the underlying comparison. So that's the practical reason. But formally speaking, I think #identical? also better b/c it is more precise.



-- 
http://bugs.ruby-lang.org/