summaryrefslogtreecommitdiffstats
path: root/src/expression.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/expression.c')
-rw-r--r--src/expression.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/expression.c b/src/expression.c
index f90ca603..d41ada39 100644
--- a/src/expression.c
+++ b/src/expression.c
@@ -824,9 +824,17 @@ static const struct expr_ops set_expr_ops = {
.destroy = compound_expr_destroy,
};
-struct expr *set_expr_alloc(const struct location *loc)
+struct expr *set_expr_alloc(const struct location *loc, const struct set *set)
{
- return compound_expr_alloc(loc, &set_expr_ops);
+ struct expr *set_expr = compound_expr_alloc(loc, &set_expr_ops);
+
+ if (!set)
+ return set_expr;
+
+ set_expr->set_flags = set->flags;
+ set_expr->dtype = set->keytype;
+
+ return set_expr;
}
static void mapping_expr_print(const struct expr *expr, struct output_ctx *octx)