Remove trace item: while calling the 'addErrorContext' builtin

This commit is contained in:
Robert Hensing 2024-03-24 00:04:30 +01:00
parent bebacc475c
commit 981c309057
4 changed files with 13 additions and 16 deletions

View File

@ -1665,6 +1665,7 @@ void EvalState::callFunction(Value & fun, size_t nrArgs, Value * * args, Value &
try {
fn->fun(*this, vCur.determinePos(noPos), args, vCur);
} catch (Error & e) {
if (fn->addTrace)
addErrorTrace(e, pos, "while calling the '%1%' builtin", fn->name);
throw;
}
@ -1713,6 +1714,7 @@ void EvalState::callFunction(Value & fun, size_t nrArgs, Value * * args, Value &
// so the debugger allows to inspect the wrong parameters passed to the builtin.
fn->fun(*this, vCur.determinePos(noPos), vArgs, vCur);
} catch (Error & e) {
if (fn->addTrace)
addErrorTrace(e, pos, "while calling the '%1%' builtin", fn->name);
throw;
}

View File

@ -69,6 +69,13 @@ struct PrimOp
*/
const char * doc = nullptr;
/**
* Add a trace item, `while calling the '<name>' builtin`
*
* This is used to remove the redundant item for `builtins.addErrorContext`.
*/
bool addTrace = true;
/**
* Implementation of the primop.
*/

View File

@ -834,6 +834,8 @@ static void prim_addErrorContext(EvalState & state, const PosIdx pos, Value * *
static RegisterPrimOp primop_addErrorContext(PrimOp {
.name = "__addErrorContext",
.arity = 2,
// The normal trace item is redundant
.addTrace = false,
.fun = prim_addErrorContext,
});

View File

@ -1,20 +1,6 @@
error:
… while calling the 'addErrorContext' builtin
at /pwd/lang/eval-fail-addErrorContext-example.nix:6:7:
5| else
6| builtins.addErrorContext
| ^
7| "while counting down; n = ${toString n}"
… while counting down; n = 10
… while calling the 'addErrorContext' builtin
at /pwd/lang/eval-fail-addErrorContext-example.nix:6:7:
5| else
6| builtins.addErrorContext
| ^
7| "while counting down; n = ${toString n}"
… while counting down; n = 9
… while counting down; n = 8