[#77789] [Ruby trunk Feature#12012] Add Boolean method — prodis@...
Issue #12012 has been updated by Fernando Hamasaki de Amorim.
4 messages
2016/10/27
[ruby-core:77813] [Ruby trunk Bug#12884] Using a HashWithIndifferentAccess with a default value in a function with a keyword parameter converts it to a Hash.
From:
mathieu@...
Date:
2016-10-29 21:29:16 UTC
List:
ruby-core #77813
Issue #12884 has been reported by Mathieu Derelle. ---------------------------------------- Bug #12884: Using a HashWithIndifferentAccess with a default value in a function with a keyword parameter converts it to a Hash. https://bugs.ruby-lang.org/issues/12884 * Author: Mathieu Derelle * Status: Open * Priority: Normal * Assignee: * ruby -v: 2.3.1 * Backport: 2.1: DONTNEED, 2.2: REQUIRED, 2.3: REQUIRED ---------------------------------------- A strange bug that broke our production when migrating from 2.1.9 to 2.2.5 (still present in 2.3.1) It involves HashWithIndifferentAccess from active support. The version used is 3.2.22.4 (against all ruby versions) Here's a bit of code to reproduce it : ~~~ ruby def test(params = HashWithIndifferentAccess.new, disrupter: nil) params.class end x = HashWithIndifferentAccess.new x[:foo] = 'bar' test x # 2.3.1 => Hash # 2.2.5 => Hash # 2.1.9 => HashWithIndifferentAccess ~~~ But this only happens if there is a keyword parameter AND a default value for your HashWithIndifferentAccess parameter : Not using a keyword parameter doesn't change the type ~~~ ruby def test(params = HashWithIndifferentAccess.new, disrupter = nil) params.class end x = HashWithIndifferentAccess.new x[:foo] = 'bar' test x # 2.3.1 => HashWithIndifferentAccess # 2.2.5 => HashWithIndifferentAccess # 2.1.9 => HashWithIndifferentAccess ~~~ Not using a default value don't change the type ~~~ ruby def test(params, disrupter: nil) params.class end x = HashWithIndifferentAccess.new x[:foo] = 'bar' test x # 2.3.1 => HashWithIndifferentAccess # 2.2.5 => HashWithIndifferentAccess # 2.1.9 => HashWithIndifferentAccess ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:[email protected]?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>