From 57cf280d7838a5cae8404402d5d4c4b657f56fcf Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Tue, 3 Apr 2018 13:16:31 +0200 Subject: 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 --- src/evaluate.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') 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: -- cgit v1.2.3