diff --git a/test/ruby/test_eval.rb b/test/ruby/test_eval.rb index 299165f..50a58ad 100644 --- a/test/ruby/test_eval.rb +++ b/test/ruby/test_eval.rb @@ -430,4 +430,23 @@ class TestEval < Test::Unit::TestCase result = foo.instance_eval(&foo_pr) assert_equal(1, result, 'Bug #3786, Bug #3860, [ruby-core:32501]') end + + def test_eval_backtrace + begin + eval("raise", binding, "(eval)", 9999) + rescue => e + assert_match /:9999:/, e.backtrace[0] + end + end + + def test_eval_source_location + expected = ["(eval)", 9999] + + source = + "class << Object.new ;" << + "def f ; end ;" << + "instance_method(:f).source_location ; end" + + assert_equal expected, eval(source, binding, *expected) + end end