diff --git a/lib/irb/debug/ui.rb b/lib/irb/debug/ui.rb index 307097b8c..7a1cd6dd1 100644 --- a/lib/irb/debug/ui.rb +++ b/lib/irb/debug/ui.rb @@ -56,7 +56,7 @@ def puts str = nil def readline _ setup_interrupt do tc = DEBUGGER__::SESSION.instance_variable_get(:@tc) - cmd = @irb.debug_readline(tc.current_frame.binding || TOPLEVEL_BINDING) + cmd = @irb.debug_readline(tc.current_frame.eval_binding || TOPLEVEL_BINDING) case cmd when nil # when user types C-d diff --git a/test/irb/test_debugger_integration.rb b/test/irb/test_debugger_integration.rb index 8b1bddea1..45ffb2a52 100644 --- a/test/irb/test_debugger_integration.rb +++ b/test/irb/test_debugger_integration.rb @@ -365,6 +365,23 @@ def bar assert_include(output, "InputMethod: RelineInputMethod") end + def test_irb_command_can_check_local_variables + write_ruby <<~'ruby' + binding.irb + ruby + + output = run_ruby_file do + type "debug" + type 'foobar = IRB' + type "show_source foobar.start" + type "show_source = 'Foo'" + type "show_source + 'Bar'" + type "continue" + end + assert_include(output, "def start(ap_path = nil)") + assert_include(output, '"FooBar"') + end + def test_help_command_is_delegated_to_the_debugger write_ruby <<~'ruby' binding.irb