From 3546cedde3f6f46f00fd67b73081cbfbb83144de Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Mon, 23 Jun 2025 22:15:58 +0900 Subject: Set up callable_method_entry for DUMMY frame on ArgumentError Before the patch: ``` $ ./miniruby -e '[1, 2].inject(:tap)' -e:1:in '
': wrong number of arguments (given 1, expected 0) (ArgumentError) from -e:1:in 'Enumerable#inject' from -e:1:in '
' ``` After the patch: ``` $ ./miniruby -e '[1, 2].inject(:tap)' -e:1:in 'Kernel#tap': wrong number of arguments (given 1, expected 0) (ArgumentError) from -e:1:in 'Enumerable#inject' from -e:1:in '
' ``` Fixes https://bugs.ruby-lang.org/issues/20968#change-113811 --- test/ruby/test_backtrace.rb | 6 ++++++ test/ruby/test_method.rb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'test/ruby') diff --git a/test/ruby/test_backtrace.rb b/test/ruby/test_backtrace.rb index 01a757f827..dad7dfcb55 100644 --- a/test/ruby/test_backtrace.rb +++ b/test/ruby/test_backtrace.rb @@ -460,4 +460,10 @@ class TestBacktrace < Test::Unit::TestCase assert_equal(__FILE__, backtrace[1].path) # not "" assert_equal("Kernel#tap", backtrace[1].label) end + + def test_backtrace_on_argument_error + lineno = __LINE__; [1, 2].inject(:tap) + rescue ArgumentError + assert_equal("#{ __FILE__ }:#{ lineno }:in 'Kernel#tap'", $!.backtrace[0].to_s) + end end diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb index a865f6100b..08f794fa0e 100644 --- a/test/ruby/test_method.rb +++ b/test/ruby/test_method.rb @@ -1612,7 +1612,7 @@ class TestMethod < Test::Unit::TestCase begin foo(1) rescue ArgumentError => e - assert_equal "main.rb:#{$line_method}:in 'foo'", e.backtrace.first + assert_equal "main.rb:#{$line_method}:in 'Object#foo'", e.backtrace.first end EOS END_OF_BODY -- cgit v1.2.3