Issue #11017 has been updated by Nobuyoshi Nakada.

Description updated
Status changed from Open to Rejected

----------------------------------------
Bug #11017: overridden method Hash#[]= doesn't return correct data
https://bugs.ruby-lang.org/issues/11017#change-51988

* Author: Vladislav Zubov
* Status: Rejected
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Hello all. 
I took the code from the active_support and its simplified
### hash_with_indifferent_access.rb

```ruby
class HashWithIndifferentAccess < Hash

  def initialize(constructor = {})
    if constructor.is_a?(Hash)
      super()
      update(constructor)
    else
      super(constructor)
    end
  end

  alias_method :hash_writer, :[]=

  def []=(key, value)
    result = hash_writer(key, convert_value(value))
    puts "result class is #{result.class}"
    result
  end

  def convert_value(value, options = {})
    if value.is_a? Hash
      HashWithIndifferentAccess.new(value)
    else
      value
    end
  end
end
```

If run this is code that it return incorrect data:

~~~ruby
> ps = HashWithIndifferentAccess.new({ first: 'first', second: 'second' })
# => {:first=>"first", :second=>"second"}
> temp_hash = ps[:test] = {}
result class is HashWithIndifferentAccess
# => {}
> temp_hash.class
# => Hash 
~~~
I see what method `HashWithIndifferentAccess#[]=` return `Hash` object but should `HashWithIndifferentAccess`.

This is a bug?



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