From a28aa80c739a1d169649a4da833ef48cfb3465b3 Mon Sep 17 00:00:00 2001 From: eregon Date: Thu, 28 Mar 2019 14:22:29 +0000 Subject: Update to ruby/spec@e81b3cd git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- spec/ruby/core/method/parameters_spec.rb | 15 +++++++++++++++ spec/ruby/core/method/to_proc_spec.rb | 11 +++++++++++ 2 files changed, 26 insertions(+) (limited to 'spec/ruby/core/method') diff --git a/spec/ruby/core/method/parameters_spec.rb b/spec/ruby/core/method/parameters_spec.rb index d750f4c221..750abe13d0 100644 --- a/spec/ruby/core/method/parameters_spec.rb +++ b/spec/ruby/core/method/parameters_spec.rb @@ -241,4 +241,19 @@ describe "Method#parameters" do m = MethodSpecs::Methods.new m.method(:writer=).parameters.should == [[:req]] end + + it "returns [[:rest]] for core methods with variable-length argument lists" do + m = "foo" + + # match takes rest args + m.method(:match).parameters.should == [[:rest]] + + # [] takes 1 to 3 args + m.method(:[]).parameters.should == [[:rest]] + end + + it "returns [[:req]] for each parameter for core methods with fixed-length argument lists" do + m = "foo" + m.method(:+).parameters.should == [[:req]] + end end diff --git a/spec/ruby/core/method/to_proc_spec.rb b/spec/ruby/core/method/to_proc_spec.rb index 92bd64aaf1..29b7bec2b3 100644 --- a/spec/ruby/core/method/to_proc_spec.rb +++ b/spec/ruby/core/method/to_proc_spec.rb @@ -90,4 +90,15 @@ describe "Method#to_proc" do array.each(&obj) ScratchPad.recorded.should == [[1, 2]] end + + it "returns a proc that properly invokes module methods with super" do + m1 = Module.new { def foo(ary); ary << :m1; end; } + m2 = Module.new { def foo(ary = []); super(ary); ary << :m2; end; } + c2 = Class.new do + include m1 + include m2 + end + + c2.new.method(:foo).to_proc.call.should == %i[m1 m2] + end end -- cgit v1.2.3