Project

General

Profile

Bug #14263

Array Intersection does not seem to use hash

Added by gkellogg (Gregg Kellogg) 22 days ago. Updated 21 days ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:84573]

Description

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.

array_intersection.rb (535 Bytes) array_intersection.rb Failing array intersection test gkellogg (Gregg Kellogg), 12/31/2017 09:58 PM

History

#1 [ruby-core:84575] Updated by marcandre (Marc-Andre Lafortune) 21 days ago

If two instances are .eql? but their hashes are not

Then eql? or 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.

Also available in: Atom PDF