Skip to content

Commit b7d4a1d

Browse files
committed
Add spec for keyword argument caller to allocate a new hash object
in Ruby versions <3.0.0
1 parent 464297e commit b7d4a1d

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

spec/ruby/language/method_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,18 @@ def m(a, **k) [a, k] end
777777
m("a" => 1, b: 2).should == [{"a" => 1, b: 2}, {}]
778778
end
779779
end
780+
781+
evaluate <<-ruby do
782+
def m(a)
783+
a.delete(:one); a
784+
end
785+
ruby
786+
h = { one: 1, two: 2 }
787+
788+
m(**h).should == { two: 2 }
789+
m(**h).should_not equal(h)
780790
end
791+
end
781792

782793
ruby_version_is "3.0" do
783794
evaluate <<-ruby do

spec/tags/language/method_tags.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
fails:A method assigns local variables from method parameters for definition 'def m() end'
22
fails:A method assigns local variables from method parameters for definition 'def m(*a) a end'
3+
fails:"A method assigns local variables from method parameters for definition \n def m(a)\n a.delete(:one); a\n end"
34
fails:A method assigns local variables from method parameters for definition 'def m(a = nil, **k) [a, k] end'
45
fails:A method assigns local variables from method parameters for definition 'def m(*a, **k) [a, k] end'
56
fails:A method assigns local variables from method parameters for definition 'def m(a, **nil); a end;'

0 commit comments

Comments
 (0)