print value in break

This commit is contained in:
Ben Burdette 2022-02-04 14:50:25 -07:00
parent 412d58f0bb
commit 3ddf864e1b
2 changed files with 7 additions and 2 deletions

View file

@ -77,7 +77,8 @@ ref<EvalState> EvalCommand::getEvalState()
searchPath, getEvalStore(), getStore());
if (startReplOnEvalErrors)
debuggerHook = [evalState{ref<EvalState>(evalState)}](const Error * error, const Env & env, const Expr & expr) {
std::cout << "\033[2J\033[1;1H";
// clear the screen.
// std::cout << "\033[2J\033[1;1H";
if (error)
printError("%s\n\n" ANSI_BOLD "Starting REPL to allow you to inspect the current state of the evaluator.\n" ANSI_NORMAL, error->what());

View file

@ -712,12 +712,13 @@ static RegisterPrimOp primop_genericClosure(RegisterPrimOp::Info {
static RegisterPrimOp primop_break({
.name = "break",
.args = {},
.args = {"v"},
.doc = R"(
In debug mode, pause Nix expression evaluation and enter the repl.
)",
.fun = [](EvalState & state, const Pos & pos, Value * * args, Value & v)
{
std::cout << "primop_break, value: " << *args[0] << std::endl;
// PathSet context;
// string s = state.coerceToString(pos, *args[0], context);
if (debuggerHook && !state.debugTraces.empty())
@ -728,6 +729,9 @@ static RegisterPrimOp primop_break({
// const Env &env;
// hintformat hint;
debuggerHook(nullptr, dt.env, dt.expr);
// returning the value we were passed.
v = *args[0];
}
}
});