Skip to content

Commit f3c831c

Browse files
authored
RFC: step through kwprep in next_line (#195)
* step through kwprep in next_line * put back next return
1 parent fb6f157 commit f3c831c

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/commands.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ function next_line!(@nospecialize(recurse), frame::Frame, istoplevel::Bool=false
216216
end
217217
shouldbreak(frame, pc) && return BreakpointRef(frame.framecode, pc)
218218
end
219+
maybe_step_through_kwprep!(recurse, frame, istoplevel)
219220
maybe_next_call!(recurse, frame, istoplevel)
220221
end
221222
next_line!(frame::Frame, istoplevel::Bool=false) = next_line!(finish_and_return!, frame, istoplevel)
@@ -401,7 +402,7 @@ function debug_command(@nospecialize(recurse), frame::Frame, cmd::Symbol, rootis
401402
end
402403
try
403404
cmd == :nc && return nicereturn!(recurse, frame, next_call!(recurse, frame, istoplevel), rootistoplevel)
404-
cmd == :n && return nicereturn!(recurse, frame, next_line!(recurse, frame, istoplevel), rootistoplevel)
405+
cmd == :n && return maybe_reset_frame!(recurse, frame, next_line!(recurse, frame, istoplevel), rootistoplevel)
405406
cmd == :se && return maybe_reset_frame!(recurse, frame, step_expr!(recurse, frame, istoplevel), rootistoplevel)
406407

407408
enter_generated = false

test/debug.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,4 +386,16 @@ struct B{T} end
386386
frame = stepkw!(frame)
387387
@test frame.pc == JuliaInterpreter.nstatements(frame.framecode) - 1
388388
end
389+
390+
function f(x, y)
391+
sin(2.0)
392+
g(x; y = 3)
393+
end
394+
g(x; y) = x + y
395+
@testset "interaction of :n with kw functions" begin
396+
frame = JuliaInterpreter.enter_call(f, 2, 3) # at sin
397+
frame, pc = debug_command(frame, :n)
398+
# Check that we are at the kw call to g
399+
@test Core.kwfunc(g) == JuliaInterpreter.@lookup frame JuliaInterpreter.pc_expr(frame).args[1]
400+
end
389401
# end

0 commit comments

Comments
 (0)