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:
parent
6801a423fc
commit
9760fa8661
5 changed files with 30 additions and 19 deletions
|
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue