Issue #13647 has been updated by nobu (Nobuyoshi Nakada).


Just an idea to keep the original argument, if something left.

https://github.com/nobu/ruby/tree/bug/13647-non-hash-rest

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

* 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)    # => "#<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>