From: skliew@... Date: 2018-01-18T17:23:10+00:00 Subject: [ruby-core:84921] [Ruby trunk Bug#14373] Methods with more than 32 keyword arguments with default values have some of the arguments set to default despite being passed in. Issue #14373 has been reported by sk (SK Liew). ---------------------------------------- Bug #14373: Methods with more than 32 keyword arguments with default values have some of the arguments set to default despite being passed in. https://bugs.ruby-lang.org/issues/14373 * Author: sk (SK Liew) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux], ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- ~~~ ruby class Test # 33 keyword arguments def test1(a0: '', a1: '', a2: '', a3: '', a4: '', a5: '', a6: '', a7: '', a8: '', b0: '', b1: '', b2: '', b3: '', b4: '', b5: '', b6: '', b7: '', b8: '', c0: '', c1: '', c2: '', c3: '', c4: '', c5: '', c6: '', c7: '', c8: '', d0: '', d1: '', d2: '', d3: '', d4: '', d5: '') puts a1 puts d5 puts '-------' end # 32 keyword arguments def test2(a0: '', a1: '', a2: '', a3: '', a4: '', a5: '', a6: '', a7: '', a8: '', b0: '', b1: '', b2: '', b3: '', b4: '', b5: '', b6: '', b7: '', b8: '', c0: '', c1: '', c2: '', c3: '', c4: '', c5: '', c6: '', c7: '', c8: '', d0: '', d1: '', d2: '', d3: '', d4: '') puts a1 puts d4 puts '-------' end end puts 'Test1 with a1, expects a1, prints nothing in 2.5, prints a1 in 2.4 and 2.3' Test.new.test1(a1: 'a1') puts 'Test1 with a1 and d5, expects a1 and d5 but only prints a1' Test.new.test1(a1: 'a1', d5: 'd5') puts 'Test1 with d5, expects d5 but prints nothing' Test.new.test1({d5: 'd5'}) puts 'Test2 with a1 and d4, as expected' Test.new.test2(a1: 'a1', d4: 'd4') puts 'Test2 with a1, as expected' Test.new.test2(a1: 'a1') ~~~ The code above describes the issues. I noticed that Ruby 2.5 behaves slightly differently from 2.3 and 2.4 (as described in the first test case). -- https://bugs.ruby-lang.org/ Unsubscribe: