mirror of
https://github.com/NixOS/nix
synced 2025-06-24 22:11:15 +02:00
libexpr: Add and use primOpApp
getter
This commit is contained in:
parent
441fa86e82
commit
f07a9f863e
2 changed files with 8 additions and 5 deletions
|
@ -525,9 +525,9 @@ std::ostream & operator<<(std::ostream & output, const PrimOp & primOp)
|
||||||
|
|
||||||
const PrimOp * Value::primOpAppPrimOp() const
|
const PrimOp * Value::primOpAppPrimOp() const
|
||||||
{
|
{
|
||||||
Value * left = payload.primOpApp.left;
|
Value * left = primOpApp().left;
|
||||||
while (left && !left->isPrimOp()) {
|
while (left && !left->isPrimOp()) {
|
||||||
left = left->payload.primOpApp.left;
|
left = left->primOpApp().left;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!left)
|
if (!left)
|
||||||
|
@ -1702,7 +1702,7 @@ void EvalState::callFunction(Value & fun, std::span<Value *> args, Value & vRes,
|
||||||
Value * primOp = &vCur;
|
Value * primOp = &vCur;
|
||||||
while (primOp->isPrimOpApp()) {
|
while (primOp->isPrimOpApp()) {
|
||||||
argsDone++;
|
argsDone++;
|
||||||
primOp = primOp->payload.primOpApp.left;
|
primOp = primOp->primOpApp().left;
|
||||||
}
|
}
|
||||||
assert(primOp->isPrimOp());
|
assert(primOp->isPrimOp());
|
||||||
auto arity = primOp->primOp()->arity;
|
auto arity = primOp->primOp()->arity;
|
||||||
|
@ -1718,8 +1718,8 @@ void EvalState::callFunction(Value & fun, std::span<Value *> args, Value & vRes,
|
||||||
|
|
||||||
Value * vArgs[maxPrimOpArity];
|
Value * vArgs[maxPrimOpArity];
|
||||||
auto n = argsDone;
|
auto n = argsDone;
|
||||||
for (Value * arg = &vCur; arg->isPrimOpApp(); arg = arg->payload.primOpApp.left)
|
for (Value * arg = &vCur; arg->isPrimOpApp(); arg = arg->primOpApp().left)
|
||||||
vArgs[--n] = arg->payload.primOpApp.right;
|
vArgs[--n] = arg->primOpApp().right;
|
||||||
|
|
||||||
for (size_t i = 0; i < argsLeft; ++i)
|
for (size_t i = 0; i < argsLeft; ++i)
|
||||||
vArgs[argsDone + i] = args[i];
|
vArgs[argsDone + i] = args[i];
|
||||||
|
|
|
@ -488,6 +488,9 @@ public:
|
||||||
|
|
||||||
ClosureThunk thunk() const
|
ClosureThunk thunk() const
|
||||||
{ return payload.thunk; }
|
{ return payload.thunk; }
|
||||||
|
|
||||||
|
FunctionApplicationThunk primOpApp() const
|
||||||
|
{ return payload.primOpApp; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue