summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--prism_compile.c2
-rw-r--r--test/ruby/test_method.rb8
-rw-r--r--version.h2
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
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"