aboutsummaryrefslogtreecommitdiff
path: root/src/check_stmt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/check_stmt.cpp')
-rw-r--r--src/check_stmt.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp
index d0783d4f4..371931b1f 100644
--- a/src/check_stmt.cpp
+++ b/src/check_stmt.cpp
@@ -170,9 +170,6 @@ bool check_is_terminating(AstNode *node) {
return has_default;
case_end;
- case_ast_node(pa, PushAllocator, node);
- return check_is_terminating(pa->body);
- case_end;
case_ast_node(pc, PushContext, node);
return check_is_terminating(pc->body);
case_end;
@@ -697,7 +694,13 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
array_init(&rhs_operands, c->tmp_allocator, 2 * lhs_count);
for_array(i, as->lhs) {
- check_expr(c, &lhs_operands[i], as->lhs[i]);
+ if (is_blank_ident(as->lhs[i])) {
+ Operand *o = &lhs_operands[i];
+ o->expr = as->lhs[i];
+ o->mode = Addressing_Value;
+ } else {
+ check_expr(c, &lhs_operands[i], as->lhs[i]);
+ }
}
check_unpack_arguments(c, nullptr, lhs_operands.count, &rhs_operands, as->rhs, true);
@@ -1648,18 +1651,11 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
case_end;
- case_ast_node(pa, PushAllocator, node);
- Operand op = {};
- check_expr(c, &op, pa->expr);
- check_assignment(c, &op, t_allocator, str_lit("argument to push_allocator"));
- check_stmt(c, pa->body, mod_flags);
- case_end;
-
case_ast_node(pa, PushContext, node);
Operand op = {};
check_expr(c, &op, pa->expr);
- check_assignment(c, &op, t_context, str_lit("argument to push_context"));
+ check_assignment(c, &op, t_context, str_lit("argument to context <-"));
check_stmt(c, pa->body, mod_flags);
case_end;