[ruby-core:70664] [Ruby trunk - Bug #11508] Hash#eql? does not respect hash ordering

From: eike@...
Date: 2015-09-04 21:12:48 UTC
List: ruby-core #70664
Issue #11508 has been updated by Eike Dierks.


ruby5 -> ruby3

maybe we should try it in rails support first.

----------------------------------------
Bug #11508: Hash#eql? does not respect hash ordering
https://bugs.ruby-lang.org/issues/11508#change-54057

* Author: Eike Dierks
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
~~~
{a:1,b:2}.eql?({b:2,a:1})
=> true
~~~

The eql? (aka ==) operator on hashes does not compare the ordering of the compared hashes.

This behaviour is documented in Hash#== (and should not be touched, ever)

I'd like to suggest:
- extend the documentation of Hash#== to *explicitely* state, that ordering is not compared
- add a new function in ruby5 to compare hashes with respect of the ordering,
   aka {a:1,b:2}.eql_with_order?({b:2,a:1}) => false














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

In This Thread

Prev Next