Array Intersection does not seem to use hash
According to the documentation for Array#&, comparison is done using hash and eql? However, this does not seem to be the case in 2.5.0.
If two instances are .eql? but their hashes are not, an array & should be empty:
([Var.new('a')] & [Var.new('b')]).empty?
This test works in 2.4.2 (and all earlier versions), but fails in 2.5.0. See attached script.
#1 [ruby-core:84575] Updated by marcandre (Marc-Andre Lafortune) 21 days ago
If two instances are .eql? but their hashes are not
hash are ill-defined. The definition of
hash is that any two objects that are
eql? must have identical
hash values. Note that objects that are not
eql? may also have identical
hash values, although it is preferable when they don't.