Skip to content

Commit

Permalink
Use correct binding in debug mode (#1007)
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 authored Oct 2, 2024
1 parent 04cd231 commit 68f718d
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 68f718d

Please sign in to comment.