| ... | @@ -5471,8 +5471,22 @@ bool const_values_equal(ConstExprValue *a, ConstExprValue *b) { | ... | @@ -5471,8 +5471,22 @@ bool const_values_equal(ConstExprValue *a, ConstExprValue *b) { |
| 5471 | case TypeTableEntryIdPointer: | 5471 | case TypeTableEntryIdPointer: |
| 5472 | case TypeTableEntryIdFn: | 5472 | case TypeTableEntryIdFn: |
| 5473 | return const_values_equal_ptr(a, b); | 5473 | return const_values_equal_ptr(a, b); |
| 5474 | case TypeTableEntryIdArray: | 5474 | case TypeTableEntryIdArray: { |
| 5475 | zig_panic("TODO"); | 5475 | assert(a->type->data.array.len == b->type->data.array.len); |
| | 5476 | assert(a->data.x_array.special != ConstArraySpecialUndef); |
| | 5477 | assert(b->data.x_array.special != ConstArraySpecialUndef); |
| | 5478 | |
| | 5479 | size_t len = a->type->data.array.len; |
| | 5480 | ConstExprValue *a_elems = a->data.x_array.s_none.elements; |
| | 5481 | ConstExprValue *b_elems = b->data.x_array.s_none.elements; |
| | 5482 | |
| | 5483 | for (size_t i = 0; i < len; ++i) { |
| | 5484 | if (!const_values_equal(&a_elems[i], &b_elems[i])) |
| | 5485 | return false; |
| | 5486 | } |
| | 5487 | |
| | 5488 | return true; |
| | 5489 | } |
| 5476 | case TypeTableEntryIdStruct: | 5490 | case TypeTableEntryIdStruct: |
| 5477 | for (size_t i = 0; i < a->type->data.structure.src_field_count; i += 1) { | 5491 | for (size_t i = 0; i < a->type->data.structure.src_field_count; i += 1) { |
| 5478 | ConstExprValue *field_a = &a->data.x_struct.fields[i]; | 5492 | ConstExprValue *field_a = &a->data.x_struct.fields[i]; |