diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-04-04 18:51:01 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-04-04 18:59:29 +0200 |
commit | c28de6d96e7bfea834a44deac5217d4696fa8d86 (patch) | |
tree | 14e467d87b1677d09e2c7c06766414e24a713289 /src/libexpr/eval.cc | |
parent | 8b31ffd10de44871a3912184fedbeca57d8cf60f (diff) |
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
Diffstat (limited to 'src/libexpr/eval.cc')
-rw-r--r-- | src/libexpr/eval.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index d26a0e258..3a2a84916 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; } |