diff options
author | Florian Westphal <fw@strlen.de> | 2018-04-03 13:16:31 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2018-04-03 15:15:00 +0200 |
commit | 57cf280d7838a5cae8404402d5d4c4b657f56fcf (patch) | |
tree | b8edbcddcdb84d32eed02c2153a6ae0734842bc1 /src/evaluate.c | |
parent | e17a9dd8c9c9417b9f2756f08069be8c593e2e7a (diff) |
evaluate: handle EXPR_MAPPING
Needed by followup patch. EXPR_SET_REF handling is bonkers, it
"works" when using { key : value } because ->key and ->left are aliased
in struct expr to the same location.
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src/evaluate.c')
-rw-r--r-- | src/evaluate.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index 536c13d9..d03bfb06 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -1421,6 +1421,8 @@ static int binop_can_transfer(struct eval_ctx *ctx, if (err <= 0) return err; return binop_can_transfer(ctx, left, right->right); + case EXPR_MAPPING: + return binop_can_transfer(ctx, left, right->left); default: return 0; } @@ -1448,6 +1450,8 @@ static int binop_transfer_one(struct eval_ctx *ctx, int err; switch ((*right)->ops->type) { + case EXPR_MAPPING: + return binop_transfer_one(ctx, left, &(*right)->left); case EXPR_VALUE: break; case EXPR_SET_ELEM: |