summaryrefslogtreecommitdiffstats
path: root/src/evaluate.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/evaluate.c')
-rw-r--r--src/evaluate.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index d0e712dc..6325f52e 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -1307,8 +1307,17 @@ static int expr_evaluate_list(struct eval_ctx *ctx, struct expr **expr)
static int expr_evaluate_set_elem(struct eval_ctx *ctx, struct expr **expr)
{
+ struct set *set = ctx->set;
struct expr *elem = *expr;
+ if (elem->stmt && set->stmt && set->stmt->ops != elem->stmt->ops)
+ return stmt_binary_error(ctx, set->stmt, elem,
+ "statement mismatch, element expects %s, "
+ "%s has type %s",
+ elem->stmt->ops->name,
+ set_is_map(set->flags) ? "map" : "set",
+ set->stmt->ops->name);
+
if (expr_evaluate(ctx, &elem->key) < 0)
return -1;