1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-07 01:51:47 +02:00

add DebugTrace for the current error

This commit is contained in:
Ben Burdette 2021-12-27 17:35:27 -07:00
parent 6801a423fc
commit 9760fa8661
5 changed files with 30 additions and 19 deletions

View file

@ -84,7 +84,7 @@ ref<EvalState> EvalCommand::getEvalState()
if (expr.staticenv)
{
auto vm = mapStaticEnvBindings(*expr.staticenv.get(), env);
runRepl(evalState, &error, *vm);
runRepl(evalState, &error, expr, *vm);
}
};
}

View file

@ -312,8 +312,10 @@ void printClosureDiff(
const StorePath & afterPath,
std::string_view indent);
void runRepl(
ref<EvalState> evalState,
const Error *debugError,
const Expr &expr,
const std::map<std::string, Value *> & extraEnv);
}

View file

@ -897,6 +897,7 @@ std::ostream & NixRepl::printValue(std::ostream & str, Value & v, unsigned int m
void runRepl(
ref<EvalState> evalState,
const Error *debugError,
const Expr &expr,
const std::map<std::string, Value *> & extraEnv)
{
auto repl = std::make_unique<NixRepl>(evalState);
@ -905,6 +906,15 @@ void runRepl(
repl->initEnv();
// tack on a final DebugTrace for the error position.
DebugTraceStacker ldts(
*evalState,
DebugTrace
{.pos = debugError->info().errPos,
.expr = expr,
.hint = debugError->info().msg
});
// add 'extra' vars.
std::set<std::string> names;
for (auto & [name, value] : extraEnv) {