Project

General

Profile

Actions

Bug #12863

closed

Hash#compact! behavior different from the Active Support Hash#compact!

Bug #12863: Hash#compact! behavior different from the Active Support Hash#compact!

Added by cha1tanya (Prathamesh Sonpatki) almost 10 years ago. Updated almost 10 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:77709]

Description

Hash#compact and Hash#compact! were added in https://bugs.ruby-lang.org/issues/11818 but the Hash#compact! is different from Active Support. Please check following snippet:

# Active Support
>> hash = { a: true, b: false, c: nil }
=> {:a=>true, :b=>false, :c=>nil}
>> hash.compact!
=> {:a=>true, :b=>false}
>> hash.compact!
=> nil

# Ruby dev

>> hash = { a: true, b: false, c: nil }
=> {:a=>true, :b=>false, :c=>nil}
>> hash.compact!
=> {:a=>true, :b=>false}
>> hash.compact!
=> {:a=>true, :b=>false}
>> 

@nobu (Nobuyoshi Nakada) Was it intentional to not return nil in case of compact! when none of the values are nil?

Updated by zverok (Victor Shepelev) almost 10 years ago Actions #1 [ruby-core:77710]

What is the reason of returning nil in that case? I believe in standard containers all bang-versions always return self?

Updated by zverok (Victor Shepelev) almost 10 years ago Actions #2 [ruby-core:77711]

Hm, looks like returning nil (if nothing was dropped) is standard behavior of Hash#reject!. Weird.

Updated by nobu (Nobuyoshi Nakada) almost 10 years ago Actions #3 [ruby-core:77712]

  • Tracker changed from Misc to Bug
  • Backport set to 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN

Updated by nobu (Nobuyoshi Nakada) almost 10 years ago Actions #4

  • Status changed from Open to Closed

Applied in changeset r56473.


hash.c: fix Hash#compact! return value

Actions

Also available in: PDF Atom