autoCallFunction: Auto-call functors

This commit is contained in:
Shea Levy 2015-11-25 11:56:14 -05:00
parent 6c10bd7c5e
commit 9533532ce2

View file

@ -1032,6 +1032,17 @@ void EvalState::autoCallFunction(Bindings & args, Value & fun, Value & res)
{ {
forceValue(fun); forceValue(fun);
if (fun.type == tAttrs) {
auto found = fun.attrs->find(sFunctor);
if (found != fun.attrs->end()) {
forceValue(*found->value);
Value * v = allocValue();
callFunction(*found->value, fun, *v, noPos);
forceValue(*v);
return autoCallFunction(args, *v, res);
}
}
if (fun.type != tLambda || !fun.lambda.fun->matchAttrs) { if (fun.type != tLambda || !fun.lambda.fun->matchAttrs) {
res = fun; res = fun;
return; return;