aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-08-27 18:38:48 -0700
committerJeremy Evans <code@jeremyevans.net>2022-03-17 11:52:02 -0700
commitb6804d62f822237e136e698e006c913df9990ec2 (patch)
tree49fb54048952f0ccd8a1e026c28688b025b68be3 /spec
parent29b68b89a0c0ea7de46c058fab746550398151f0 (diff)
downloadruby-b6804d62f822237e136e698e006c913df9990ec2.tar.gz
Make Proc#parameters support lambda keyword for returning parameters as if lambda
This makes it easier to use Proc#parameters to build wrappers. Implements [Feature #15357]
Diffstat (limited to 'spec')
-rw-r--r--spec/ruby/core/proc/parameters_spec.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/spec/ruby/core/proc/parameters_spec.rb b/spec/ruby/core/proc/parameters_spec.rb
index 11a38b66e3..3ced7b22ab 100644
--- a/spec/ruby/core/proc/parameters_spec.rb
+++ b/spec/ruby/core/proc/parameters_spec.rb
@@ -20,6 +20,21 @@ describe "Proc#parameters" do
proc {|x| }.parameters.first.first.should == :opt
end
+ ruby_version_is "3.2" do
+ it "sets the first element of each sub-Array to :req if argument would be required if a lambda if lambda keyword used" do
+ proc {|x| }.parameters(lambda: true).first.first.should == :req
+ proc {|y,*x| }.parameters(lambda: true).first.first.should == :req
+ end
+
+ it "regards named parameters in procs as required if lambda keyword used" do
+ proc {|x| }.parameters(lambda: true).first.first.should == :req
+ end
+
+ it "regards named parameters in lambda as optional if lambda: false keyword used" do
+ lambda {|x| }.parameters(lambda: false).first.first.should == :opt
+ end
+ end
+
it "regards optional keyword parameters in procs as optional" do
proc {|x: :y| }.parameters.first.first.should == :key
end