diff options
Diffstat (limited to 'src/tilde_stmt.cpp')
| -rw-r--r-- | src/tilde_stmt.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/tilde_stmt.cpp b/src/tilde_stmt.cpp index cc15c2abc..ff4c007ea 100644 --- a/src/tilde_stmt.cpp +++ b/src/tilde_stmt.cpp @@ -155,7 +155,7 @@ gb_internal bool cg_addr_is_empty(cgAddr const &addr) { case cgValue_Symbol: return addr.addr.symbol == nullptr; case cgValue_Multi: - return addr.addr.multi_nodes == nullptr; + return addr.addr.multi == nullptr; } return true; } @@ -710,18 +710,12 @@ gb_internal isize cg_append_tuple_values(cgProcedure *p, Array<cgValue> *dst_val isize init_count = dst_values->count; Type *t = src_value.type; if (t && t->kind == Type_Tuple) { - GB_PANIC("TODO(bill): tuple assignments"); - // cgTupleFix *tf = map_get(&p->tuple_fix_map, src_value.value); - // if (tf) { - // for (cgValue const &value : tf->values) { - // array_add(dst_values, value); - // } - // } else { - // for_array(i, t->Tuple.variables) { - // cgValue v = cg_emit_tuple_ev(p, src_value, cast(i32)i); - // array_add(dst_values, v); - // } - // } + GB_ASSERT(src_value.kind == cgValue_Multi); + GB_ASSERT(src_value.multi != nullptr); + GB_ASSERT(src_value.multi->values.count == t->Tuple.variables.count); + for (cgValue const &value : src_value.multi->values) { + array_add(dst_values, value); + } } else { array_add(dst_values, src_value); } |