Use compare_by_identity hash [Bug #16250]

This commit is contained in:
Nobuyoshi Nakada 2019-10-15 09:54:23 +09:00
parent b7079e5384
commit f94202fcc2
No known key found for this signature in database
GPG Key ID: 4BC7D6DF58D8DF60

View File

@ -70,7 +70,7 @@ module IRB # :nodoc:
$stdout.tty? && supported? && (/mswin|mingw/ =~ RUBY_PLATFORM || (ENV.key?('TERM') && ENV['TERM'] != 'dumb'))
end
def inspect_colorable?(obj, seen: {})
def inspect_colorable?(obj, seen: {}.compare_by_identity)
case obj
when String, Symbol, Regexp, Integer, Float, FalseClass, TrueClass, NilClass
true
@ -137,8 +137,8 @@ module IRB # :nodoc:
private
def without_circular_ref(obj, seen:, &block)
return false if seen.key?(obj.object_id)
seen[obj.object_id] = true
return false if seen.key?(obj)
seen[obj] = true
block.call
ensure
seen.delete(obj.object_id)