mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
non-symbol keys in kwargs
* class.c (separate_symbol): [EXPERIMENTAL] non-symbol key in keyword arguments hash causes an exception now. c.f. https://twitter.com/yukihiro_matz/status/1022287578995646464 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64358 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
31bfe0fe86
commit
37279d1546
5 changed files with 140 additions and 52 deletions
|
@ -836,7 +836,12 @@ describe "A method" do
|
|||
|
||||
m(b: 2).should == [1, 2]
|
||||
m(2, b: 1).should == [2, 1]
|
||||
m("a" => 1, b: 2).should == [{"a" => 1}, 2]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, b: 2).should == [{"a" => 1}, 2]
|
||||
end
|
||||
ruby_version_is ""..."2.6" do
|
||||
lambda {m("a" => 1, b: 2)}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
evaluate <<-ruby do
|
||||
|
@ -846,7 +851,12 @@ describe "A method" do
|
|||
m().should == [1, 2]
|
||||
m(2).should == [2, 2]
|
||||
m(b: 3).should == [1, 3]
|
||||
m("a" => 1, b: 2).should == [{"a" => 1}, 2]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, b: 2).should == [{"a" => 1}, 2]
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, b: 2)}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
evaluate <<-ruby do
|
||||
|
@ -855,7 +865,12 @@ describe "A method" do
|
|||
|
||||
m().should == 1
|
||||
m(2, a: 1, b: 0).should == 2
|
||||
m("a" => 1, a: 2).should == {"a" => 1}
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, a: 2).should == {"a" => 1}
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, a: 2)}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
evaluate <<-ruby do
|
||||
|
@ -901,7 +916,12 @@ describe "A method" do
|
|||
|
||||
m(a: 1).should == 1
|
||||
m(1, 2, a: 3).should == 3
|
||||
m("a" => 1, a: 2).should == 2
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, a: 2).should == 2
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, a: 2)}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
evaluate <<-ruby do
|
||||
|
@ -910,7 +930,12 @@ describe "A method" do
|
|||
|
||||
m(b: 1).should == [[], 1]
|
||||
m(1, 2, b: 3).should == [[1, 2], 3]
|
||||
m("a" => 1, b: 2).should == [[{"a" => 1}], 2]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, b: 2).should == [[{"a" => 1}], 2]
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, b: 2)}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
evaluate <<-ruby do
|
||||
|
@ -921,7 +946,12 @@ describe "A method" do
|
|||
m(1, 2).should == 1
|
||||
m(a: 2).should == 2
|
||||
m(1, a: 2).should == 2
|
||||
m("a" => 1, a: 2).should == 2
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, a: 2).should == 2
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, a: 2)}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
evaluate <<-ruby do
|
||||
|
@ -930,7 +960,12 @@ describe "A method" do
|
|||
|
||||
m().should == [[], 1]
|
||||
m(1, 2, 3, b: 4).should == [[1, 2, 3], 4]
|
||||
m("a" => 1, b: 2).should == [[{"a" => 1}], 2]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, b: 2).should == [[{"a" => 1}], 2]
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, b: 2)}.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
a = mock("splat")
|
||||
a.should_not_receive(:to_ary)
|
||||
|
@ -961,7 +996,12 @@ describe "A method" do
|
|||
|
||||
m().should == []
|
||||
m(1, 2, 3, a: 4, b: 5).should == [1, 2, 3]
|
||||
m("a" => 1, a: 1).should == [{"a" => 1}]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, a: 1).should == [{"a" => 1}]
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, a: 1)}.should raise_error(ArgumentError)
|
||||
end
|
||||
m(1, **{a: 2}).should == [1]
|
||||
|
||||
h = mock("keyword splat")
|
||||
|
@ -975,7 +1015,12 @@ describe "A method" do
|
|||
|
||||
m().should == {}
|
||||
m(1, 2, 3, a: 4, b: 5).should == {a: 4, b: 5}
|
||||
m("a" => 1, a: 1).should == {a: 1}
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, a: 1).should == {a: 1}
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, a: 1)}.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
h = mock("keyword splat")
|
||||
h.should_receive(:to_hash).and_return({a: 1})
|
||||
|
@ -989,12 +1034,22 @@ describe "A method" do
|
|||
m().should == [nil, {}]
|
||||
m("a" => 1).should == [{"a" => 1}, {}]
|
||||
m(a: 1).should == [nil, {a: 1}]
|
||||
m("a" => 1, a: 1).should == [{"a" => 1}, {a: 1}]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, a: 1).should == [{"a" => 1}, {a: 1}]
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, a: 1)}.should raise_error(ArgumentError)
|
||||
end
|
||||
m({ "a" => 1 }, a: 1).should == [{"a" => 1}, {a: 1}]
|
||||
m({a: 1}, {}).should == [{a: 1}, {}]
|
||||
|
||||
h = {"a" => 1, b: 2}
|
||||
m(h).should == [{"a" => 1}, {b: 2}]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m(h).should == [{"a" => 1}, {b: 2}]
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m(h)}.should raise_error(ArgumentError)
|
||||
end
|
||||
h.should == {"a" => 1, b: 2}
|
||||
|
||||
h = {"a" => 1}
|
||||
|
@ -1014,7 +1069,12 @@ describe "A method" do
|
|||
|
||||
h = mock("keyword splat")
|
||||
h.should_receive(:to_hash).and_return({"a" => 1, a: 2})
|
||||
m(h).should == [{"a" => 1}, {a: 2}]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m(h).should == [{"a" => 1}, {a: 2}]
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m(h)}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
evaluate <<-ruby do
|
||||
|
@ -1028,7 +1088,12 @@ describe "A method" do
|
|||
|
||||
m("a" => 1).should == [[{"a" => 1}], {}]
|
||||
m(a: 1).should == [[], {a: 1}]
|
||||
m("a" => 1, a: 1).should == [[{"a" => 1}], {a: 1}]
|
||||
ruby_version_is ""..."2.6" do
|
||||
m("a" => 1, a: 1).should == [[{"a" => 1}], {a: 1}]
|
||||
end
|
||||
ruby_version_is "2.6" do
|
||||
lambda {m("a" => 1, a: 1)}.should raise_error(ArgumentError)
|
||||
end
|
||||
m({ "a" => 1 }, a: 1).should == [[{"a" => 1}], {a: 1}]
|
||||
m({a: 1}, {}).should == [[{a: 1}], {}]
|
||||
m({a: 1}, {"a" => 1}).should == [[{a: 1}, {"a" => 1}], {}]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue