From c28de6d96e7bfea834a44deac5217d4696fa8d86 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 4 Apr 2014 18:51:01 +0200 Subject: Pass position information to primop calls For example: error: `tail' called on an empty list, at /home/eelco/Dev/nixpkgs/pkgs/applications/misc/hello/ex-2/default.nix:13:7 --- src/libexpr/eval.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/libexpr/eval.cc') diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index d26a0e2584c7..3a2a84916e06 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -794,7 +794,7 @@ void ExprApp::eval(EvalState & state, Env & env, Value & v) } -void EvalState::callPrimOp(Value & fun, Value & arg, Value & v) +void EvalState::callPrimOp(Value & fun, Value & arg, Value & v, const Pos & pos) { /* Figure out the number of arguments still needed. */ unsigned int argsDone = 0; @@ -820,7 +820,7 @@ void EvalState::callPrimOp(Value & fun, Value & arg, Value & v) /* And call the primop. */ nrPrimOpCalls++; if (countCalls) primOpCalls[primOp->primOp->name]++; - primOp->primOp->fun(*this, vArgs, v); + primOp->primOp->fun(*this, pos, vArgs, v); } else { Value * fun2 = allocValue(); *fun2 = fun; @@ -834,7 +834,7 @@ void EvalState::callPrimOp(Value & fun, Value & arg, Value & v) void EvalState::callFunction(Value & fun, Value & arg, Value & v, const Pos & pos) { if (fun.type == tPrimOp || fun.type == tPrimOpApp) { - callPrimOp(fun, arg, v); + callPrimOp(fun, arg, v, pos); return; } -- cgit 1.4.1