diff options
Diffstat (limited to 'src/optimize.c')
-rw-r--r-- | src/optimize.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/optimize.c b/src/optimize.c index 04523edb..64c0a4db 100644 --- a/src/optimize.c +++ b/src/optimize.c @@ -435,18 +435,22 @@ static void build_verdict_map(struct expr *expr, struct stmt *verdict, struct ex { struct expr *item, *elem, *mapping; - if (expr->etype == EXPR_LIST) { + switch (expr->etype) { + case EXPR_LIST: + case EXPR_SET: list_for_each_entry(item, &expr->expressions, list) { elem = set_elem_expr_alloc(&internal_location, expr_get(item)); mapping = mapping_expr_alloc(&internal_location, elem, expr_get(verdict->expr)); compound_expr_add(set, mapping); } - } else { + break; + default: elem = set_elem_expr_alloc(&internal_location, expr_get(expr)); mapping = mapping_expr_alloc(&internal_location, elem, expr_get(verdict->expr)); compound_expr_add(set, mapping); + break; } } |