From: nobu@... Date: 2017-08-06T03:06:46+00:00 Subject: [ruby-core:82261] [Ruby trunk Bug#13647] Some weird behaviour with keyword arguments Issue #13647 has been updated by nobu (Nobuyoshi Nakada). After the previous developers' meeting, Matz said an idea to restrict it to only `T_HASH` and not to call `to_hash` method, but it breaks mocks in rubyspec so much. ---------------------------------------- Bug #13647: Some weird behaviour with keyword arguments https://bugs.ruby-lang.org/issues/13647#change-66044 * Author: Arepo (Sasha Cooper) * Status: Feedback * Priority: Normal * Assignee: * Target version: * ruby -v: 2.3.0, 2.4.0 * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- I was just playing around and found this weird behaviour, which seems to be in at least Ruby 2.3.0 and Ruby 2.4.0: ~~~ ruby hashie = Hashie::Mash.new(a: :b) def foo(hashie) hashie.inspect end def woo(hashie, bashie: nil) hashie.inspect end def zoo(hashie = nil, cashie: nil) hashie.inspect end foo(hashie) # => "#" woo(hashie) # => "#" ~~~ So far so good, but when we call the third method, we get this: ~~~ ruby zoo(hashie) # => "{\"a\"=>:b}" ~~~ Similarly, ~~~ ruby zoo(:symbol) # => ":symbol" ~~~ Is this intentional behaviour? If so, what's the rationale? If not, is it a known issue? -- https://bugs.ruby-lang.org/ Unsubscribe: