From: "nick78 (Nick S)" Date: 2014-01-08T12:56:44+09:00 Subject: [ruby-core:59638] [ruby-trunk - Bug #9381][Open] 2.1.0 Regression. Hash lookup with #hash and #eql? Issue #9381 has been reported by nick78 (Nick S). ---------------------------------------- Bug #9381: 2.1.0 Regression. Hash lookup with #hash and #eql? https://bugs.ruby-lang.org/issues/9381 Author: nick78 (Nick S) Status: Open Priority: Normal Assignee: Category: core Target version: ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN 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)] ------------- -- http://bugs.ruby-lang.org/