[ruby-core:88864] [Ruby trunk Bug#13647][Open] Some weird behaviour with keyword arguments

From: ruby-core@...
Date: 2018-09-05 15:38:20 UTC
List: ruby-core #88864
Issue #13647 has been updated by marcandre (Marc-Andre Lafortune).

Status changed from Feedback to Open
Assignee set to matz (Yukihiro Matsumoto)

nobu (Nobuyoshi Nakada) wrote:
> Just an idea to keep the original argument, if something left.
> 
> https://github.com/nobu/ruby/tree/bug/13647-non-hash-rest

I agree that if the conversion of a hash-like argument to keyword parameter fails because the keys aren't all symbols, the original object should be passed.

I would do this without waiting for final decision on if `to_hash` is acceptable for keyword arguments or not, since even if it is decided to change so that `to_hash` isn't sufficient, the new behavior will be to receive the original object.

----------------------------------------
Bug #13647: Some weird behaviour with keyword arguments
https://bugs.ruby-lang.org/issues/13647#change-73906

* Author: Arepo (Sasha Cooper)
* Status: Open
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* 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)    # => "#<Hashie::Mash a=:b>"

    woo(hashie)    # => "#<Hashie::Mash a=:b>"
~~~


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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next