diff --git a/Project.toml b/Project.toml index b269d45..7b1c88e 100644 --- a/Project.toml +++ b/Project.toml @@ -15,7 +15,7 @@ REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" CodeTracking = "0.5.7, 1" Crayons = "4.1" Highlights = "0.4.3, 0.5" -JuliaInterpreter = "0.9.46" +JuliaInterpreter = "0.10" julia = "1.6" [extras] diff --git a/src/Debugger.jl b/src/Debugger.jl index 9cb0ee4..b9b59bc 100644 --- a/src/Debugger.jl +++ b/src/Debugger.jl @@ -12,7 +12,7 @@ using REPL.REPLCompletions using CodeTracking using JuliaInterpreter: JuliaInterpreter, Frame, lookup, FrameCode, BreakpointRef, debug_command, leaf, root, BreakpointState, - finish_and_return!, Compiled + finish_and_return!, Interpreter, NonRecursiveInterpreter, RecursiveInterpreter using JuliaInterpreter: pc_expr, moduleof, linenumber, extract_args, locals, root, caller, whereis, get_return, nstatements, getargs @@ -43,7 +43,7 @@ Base.@kwdef mutable struct DebuggerState broke_on_error::Bool = false watch_list::Vector = WATCH_LIST lowered_status::Bool = false - mode = finish_and_return! + interp::Interpreter = RecursiveInterpreter() repl = nothing terminal = nothing main_mode = nothing @@ -53,7 +53,7 @@ Base.@kwdef mutable struct DebuggerState end function toggle_mode(state) - state.mode = (state.mode === finish_and_return! ? (state.mode = Compiled()) : (state.mode = finish_and_return!)) + state.interp = (state.interp === RecursiveInterpreter() ? (state.interp = NonRecursiveInterpreter()) : (state.interp = RecursiveInterpreter())) end toggle_lowered(state) = state.lowered_status = !state.lowered_status diff --git a/src/commands.jl b/src/commands.jl index bc38666..7e4fa1a 100644 --- a/src/commands.jl +++ b/src/commands.jl @@ -43,7 +43,7 @@ function execute_command(state::DebuggerState, v::Union{Val{:c},Val{:nc},Val{:n} assert_allow_step(state) || return false cmd == "so" && (cmd = "finish") cmd == "u" && (cmd = "until") - ret = debug_command(state.mode, state.frame, Symbol(cmd); kwargs...) + ret = debug_command(state.interp, state.frame, Symbol(cmd); kwargs...) if ret === nothing state.overall_result = get_return(root(state.frame)) state.frame = nothing diff --git a/src/repl.jl b/src/repl.jl index 419ddc4..e48fb40 100644 --- a/src/repl.jl +++ b/src/repl.jl @@ -29,7 +29,7 @@ function RunDebugger(frame, repl = nothing, terminal = nothing; initial_continue normal_prefix = Sys.iswindows() ? "\e[33m" : "\e[38;5;166m" compiled_prefix = "\e[96m" panel = LineEdit.Prompt(promptname(state.level, "debug"); - prompt_prefix = () -> state.mode == Compiled() ? compiled_prefix : normal_prefix, + prompt_prefix = () -> state.interp == NonRecursiveInterpreter() ? compiled_prefix : normal_prefix, prompt_suffix = Base.text_colors[:normal], on_enter = s->true) diff --git a/test/misc.jl b/test/misc.jl index be62658..8acf81c 100644 --- a/test/misc.jl +++ b/test/misc.jl @@ -3,7 +3,7 @@ using Debugger: _iscall using JuliaInterpreter using JuliaInterpreter: pc_expr, evaluate_call!, finish_and_return!, enter_call_expr -runframe(frame::Frame, pc=frame.pc[]) = Some{Any}(finish_and_return!(Compiled(), frame)) +runframe(frame::Frame, pc=frame.pc[]) = Some{Any}(finish_and_return!(NonRecursiveInterpreter(), frame)) frame = @make_frame map(x->2x, 1:10) state = dummy_state(frame)