summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/ruby/test_method.rb12
-rw-r--r--vm_insnhelper.c2
2 files changed, 7 insertions, 7 deletions
diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb
index 91f4b99181..a7945082c2 100644
--- a/test/ruby/test_method.rb
+++ b/test/ruby/test_method.rb
@@ -1645,15 +1645,15 @@ class TestMethod < Test::Unit::TestCase
assert_in_out_err '-w', <<-'RUBY' do |_out, err, _status|
def foo = nil
foo{} # warn
- send(:foo){} # warn
+ send(:foo){} # don't warn because it uses send
b = Proc.new{}
foo(&b) # warn
RUBY
- assert_equal 3, err.size
- err = err.join
- assert_match(/-:2: warning/, err)
- assert_match(/-:3: warning/, err)
- assert_match(/-:5: warning/, err)
+ errstr = err.join("\n")
+ assert_equal 2, err.size, errstr
+
+ assert_match(/-:2: warning/, errstr)
+ assert_match(/-:5: warning/, errstr)
end
assert_in_out_err '-w', <<-'RUBY' do |_out, err, _status|
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 29e6f28dec..d0f73ecf42 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -3090,7 +3090,7 @@ vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling,
if (UNLIKELY(!ISEQ_BODY(iseq)->param.flags.use_block &&
calling->block_handler != VM_BLOCK_HANDLER_NONE &&
- !(vm_ci_flag(calling->cd->ci) & VM_CALL_SUPER))) {
+ !(vm_ci_flag(calling->cd->ci) & (VM_CALL_OPT_SEND | VM_CALL_SUPER)))) {
warn_unused_block(vm_cc_cme(cc), iseq, (void *)ec->cfp->pc);
}