From d720ea59ca36f726b8484b3b66e3e2c40784ac89 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Thu, 13 Feb 2025 17:51:03 -0800 Subject: merge revision(s) 2a1cff40f5e7875f69a7d0ed59eab92cc86c65ff: [Backport #21003] Do not warn unused block when using forwarding Fixes [Bug #21003] --- prism_compile.c | 2 ++ test/ruby/test_method.rb | 8 ++++++++ version.h | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/prism_compile.c b/prism_compile.c index bb3d91ffde..a021b4c94f 100644 --- a/prism_compile.c +++ b/prism_compile.c @@ -1756,6 +1756,8 @@ pm_setup_args_core(const pm_arguments_node_t *arguments_node, const pm_node_t *b break; } case PM_FORWARDING_ARGUMENTS_NODE: { // not counted in argc return value + iseq_set_use_block(ISEQ_BODY(iseq)->local_iseq); + if (ISEQ_BODY(ISEQ_BODY(iseq)->local_iseq)->param.flags.forwardable) { *flags |= VM_CALL_FORWARDING; diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb index 0707d61f1b..5d5d5aac02 100644 --- a/test/ruby/test_method.rb +++ b/test/ruby/test_method.rb @@ -1776,5 +1776,13 @@ class TestMethod < Test::Unit::TestCase RUBY assert_equal 0, err.size, err.join("\n") end + + assert_in_out_err '-w', <<-'RUBY' do |_out, err, _status| + def foo(*, &block) = block + def bar(buz, ...) = foo(buz, ...) + bar(:test) {} # do not warn because of forwarding + RUBY + assert_equal 0, err.size, err.join("\n") + end end end diff --git a/version.h b/version.h index b2465417a4..334b1ab7e7 100644 --- a/version.h +++ b/version.h @@ -11,7 +11,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 1 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 2 +#define RUBY_PATCHLEVEL 3 #include "ruby/version.h" #include "ruby/internal/abi.h" -- cgit v1.2.3