From: "nobu (Nobuyoshi Nakada)" Date: 2014-01-08T15:38:57+09:00 Subject: [ruby-core:59639] [ruby-trunk - Bug #9381][Assigned] 2.1.0 Regression. Hash lookup with #hash and #eql? Issue #9381 has been updated by nobu (Nobuyoshi Nakada). Description updated Status changed from Open to Assigned Assignee set to nobu (Nobuyoshi Nakada) Target version set to current: 2.2.0 Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN to 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED ---------------------------------------- Bug #9381: 2.1.0 Regression. Hash lookup with #hash and #eql? https://bugs.ruby-lang.org/issues/9381#change-44167 Author: nick78 (Nick S) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: core Target version: current: 2.2.0 ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux] Backport: 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED =begin Ruby 2.1.0 won't fetch objects when the lookup key overrides (({#hash})) and (({#eql?})). This is a regression as it works as expected in ruby 1.8, 1.9 and 2.0. class Wrapper def initialize(obj) @obj = obj end def method_missing(symbol, *args, &block) @obj.__send__(symbol, *args, &block) end def hash @obj.hash end def eql?(other) @obj.eql?(other) end end hash = { 5 => "LOOKUP SUCCEEDED" } # Prints "LOOKUP SUCCEEDED" on RUBY < 2.1.0. Fails on RUBY 2.1.0. p hash[Wrapper.new(5)] =end -- http://bugs.ruby-lang.org/