From: ruby-core@... Date: 2018-01-01T17:41:45+00:00 Subject: [ruby-core:84575] [Ruby trunk Bug#14263] Array Intersection does not seem to use hash Issue #14263 has been updated by marcandre (Marc-Andre Lafortune). > 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. ---------------------------------------- Bug #14263: Array Intersection does not seem to use hash https://bugs.ruby-lang.org/issues/14263#change-69115 * Author: gkellogg (Gregg Kellogg) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.5.0 * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- 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: ~~~ ruby ([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. ---Files-------------------------------- array_intersection.rb (535 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: