diff options
| author | Takashi Kokubun <takashikkbn@gmail.com> | 2025-02-13 17:51:03 -0800 |
|---|---|---|
| committer | Takashi Kokubun <takashikkbn@gmail.com> | 2025-02-13 17:51:03 -0800 |
| commit | d720ea59ca36f726b8484b3b66e3e2c40784ac89 (patch) | |
| tree | 6d6b75a5473f35afc51458313c18ac29ca94b2f0 | |
| parent | 5ba052675f0eefe77dd7ab30bb9ac186f8d82ccb (diff) | |
merge revision(s) 2a1cff40f5e7875f69a7d0ed59eab92cc86c65ff: [Backport #21003]
Do not warn unused block when using forwarding
Fixes [Bug #21003]
| -rw-r--r-- | prism_compile.c | 2 | ||||
| -rw-r--r-- | test/ruby/test_method.rb | 8 | ||||
| -rw-r--r-- | version.h | 2 |
3 files changed, 11 insertions, 1 deletions
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 @@ -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" |
