1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-27 12:41:15 +02:00

first whack at passing evalState as an arg to debuggerHook.

This commit is contained in:
Ben Burdette 2022-05-16 09:20:51 -06:00
parent 86ba0a702c
commit 667074b586
9 changed files with 15 additions and 14 deletions

View file

@ -1044,7 +1044,7 @@ DebugTraceStacker::DebugTraceStacker(EvalState & evalState, DebugTrace t)
{
evalState.debugTraces.push_front(trace);
if (evalState.debugStop && debuggerHook)
debuggerHook(nullptr, trace.env, trace.expr);
debuggerHook(evalState, nullptr, trace.env, trace.expr);
}
void Value::mkString(std::string_view s)

View file

@ -136,7 +136,7 @@ public:
void debugThrow(const E &error, const Env & env, const Expr & expr) const
{
if (debuggerHook)
debuggerHook(&error, env, expr);
debuggerHook(*this, &error, env, expr);
throw error;
}
@ -150,7 +150,7 @@ public:
// DebugTrace stack.
if (debuggerHook && !debugTraces.empty()) {
const DebugTrace & last = debugTraces.front();
debuggerHook(&e, last.env, last.expr);
debuggerHook(*this, &e, last.env, last.expr);
}
throw e;

View file

@ -10,7 +10,7 @@ namespace nix {
/* Launch the nix debugger */
std::function<void(const Error * error, const Env & env, const Expr & expr)> debuggerHook;
std::function<void(const EvalState & evalState,const Error * error, const Env & env, const Expr & expr)> debuggerHook;
/* Displaying abstract syntax trees. */

View file

@ -22,7 +22,7 @@ MakeError(UndefinedVarError, Error);
MakeError(MissingArgumentError, EvalError);
MakeError(RestrictedPathError, Error);
extern std::function<void(const Error * error, const Env & env, const Expr & expr)> debuggerHook;
extern std::function<void(const EvalState & evalState, const Error * error, const Env & env, const Expr & expr)> debuggerHook;
/* Position objects. */

View file

@ -765,7 +765,7 @@ static RegisterPrimOp primop_break({
});
auto & dt = state.debugTraces.front();
debuggerHook(&error, dt.env, dt.expr);
debuggerHook(state, &error, dt.env, dt.expr);
if (state.debugQuit) {
// If the user elects to quit the repl, throw an exception.