|author||Jeremy Evans <email@example.com>||2019-10-15 12:46:24 -0700|
|committer||Jeremy Evans <firstname.lastname@example.org>||2019-10-15 12:46:24 -0700|
Dup hash with keyword flag when converted to keywords
When ruby2_keywords is used on a method, keywords passed to the method are flagged. When the hash is passed as the last element of an argument splat to another method, the hash should be treated as a keyword splat. When keyword splatting a hash, a duplicate of the hash is made. So when auto-splatting the hash with the keyword flag, a duplicate of the hash should also be made. This fixes cases where the hash is later passed to another method and would be treated as keywords there: class Object ruby2_keywords def foo(*a) bar(*a) end def bar(*a) baz(*a) end def baz(*a, **kw) [a, kw] end end foo(:a=>1) Previously, this would pass the :a=>1 as keywords to bar and also as keywords to baz. Now it only passes :a=>1 as keywords to bar, but bar passes :a=>1 as a positional hash to baz (which in this case generates a warning in 2.7).
Diffstat (limited to '.travis.yml')
0 files changed, 0 insertions, 0 deletions