summaryrefslogtreecommitdiff
path: root/spec/ruby/core/method/parameters_spec.rb
diff options
context:
space:
mode:
authorUfuk Kayserilioglu <ufuk.kayserilioglu@shopify.com>2024-06-26 17:38:01 -0400
committerKevin Newton <kddnewton@gmail.com>2026-02-15 14:12:15 -0500
commit99674185d63162eadcded3d2623a181fddf2bbb3 (patch)
tree0b2b62b3d5c9124b1fc9a9551850a3494de1fb3d /spec/ruby/core/method/parameters_spec.rb
parent071c6d149b8e67960ba809089c3736926620c40e (diff)
Start handling `&nil` in method parameters
Similar to `:nokey` for `**nil` declaring methods/procs, a method/proc with a `&nil` declaration will return a `:noblock` entry in the parameters array.
Diffstat (limited to 'spec/ruby/core/method/parameters_spec.rb')
-rw-r--r--spec/ruby/core/method/parameters_spec.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/spec/ruby/core/method/parameters_spec.rb b/spec/ruby/core/method/parameters_spec.rb
index f1c2523cf0..41b9cd8d12 100644
--- a/spec/ruby/core/method/parameters_spec.rb
+++ b/spec/ruby/core/method/parameters_spec.rb
@@ -22,6 +22,12 @@ describe "Method#parameters" do
local_is_not_parameter = {}
end
+ ruby_version_is "4.1" do
+ eval <<-RUBY
+ def one_noblock(&nil); end
+ RUBY
+ end
+
def forward_parameters(...) end
def underscore_parameters(_, _, _ = 1, *_, _:, _: 2, **_, &_); end
@@ -187,6 +193,13 @@ describe "Method#parameters" do
m.parameters.should == [[:nokey]]
end
+ ruby_version_is "4.1" do
+ it "returns [[:noblock]] for a method with a single &nil parameter" do
+ m = MethodSpecs::Methods.instance_method(:one_noblock)
+ m.parameters.should == [[:noblock]]
+ end
+ end
+
it "works with ->(){} as the value of an optional argument" do
m = MethodSpecs::Methods.instance_method(:one_opt_with_stabby)
m.parameters.should == [[:opt,:a]]