summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2018-04-02 21:26:07 +0200
committerFlorian Westphal <fw@strlen.de>2018-04-03 15:15:17 +0200
commitaa732e3053e64b62318dd056aac140158c680f8a (patch)
tree1cf0bacdb6201df63aa173862da018a97c2159f0
parent57cf280d7838a5cae8404402d5d4c4b657f56fcf (diff)
evaluate: use recursive call for SET_REF handling
We can now call the helper again, with set->init as new RHS expression. Signed-off-by: Florian Westphal <fw@strlen.de>
-rw-r--r--src/evaluate.c30
1 files changed, 1 insertions, 29 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index d03bfb06..efdbb5e5 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -1552,35 +1552,7 @@ static int __binop_transfer(struct eval_ctx *ctx,
}
break;
case EXPR_SET_REF:
- list_for_each_entry(i, &(*right)->set->init->expressions, list) {
- switch (i->key->ops->type) {
- case EXPR_VALUE:
- case EXPR_RANGE:
- case EXPR_SET_ELEM:
- err = binop_can_transfer(ctx, left, i->key);
- if (err <= 0)
- return err;
- break;
- default:
- break;
- }
- }
- list_for_each_entry_safe(i, next, &(*right)->set->init->expressions,
- list) {
- list_del(&i->list);
- switch (i->key->ops->type) {
- case EXPR_VALUE:
- case EXPR_RANGE:
- case EXPR_SET_ELEM:
- if (binop_transfer_one(ctx, left, &i->key) < 0)
- return -1;
- break;
- default:
- break;
- }
- list_add_tail(&i->list, &next->list);
- }
- break;
+ return __binop_transfer(ctx, left, &(*right)->set->init);
default:
return 0;
}