Skip to content

Commit

Permalink
Use correct binding in debug mode
Browse files Browse the repository at this point in the history
In debug command, IRB's context was using wrong binding.
Some code colorization, command detection failed because binding.local_variable returned wrong value.
  • Loading branch information
tompng committed Sep 21, 2024
1 parent 71f4d6b commit b5cacec
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/irb/debug/ui.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
17 changes: 17 additions & 0 deletions test/irb/test_debugger_integration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit b5cacec

Please sign in to comment.