| ... | ... | @@ -5973,7 +5973,8 @@ ZigValue *get_the_one_possible_value(CodeGen *g, ZigType *type_entry) { |
| 5973 | 5973 | } |
| 5974 | 5974 | ZigType *field_type = resolve_struct_field_type(g, field); |
| 5975 | 5975 | assert(field_type != nullptr); |
| 5976 | | result->data.x_struct.fields[i] = get_the_one_possible_value(g, field_type); |
| 5976 | copy_const_val(g, result->data.x_struct.fields[i], |
| 5977 | get_the_one_possible_value(g, field_type)); |
| 5977 | 5978 | } |
| 5978 | 5979 | } else if (result->type->id == ZigTypeIdArray) { |
| 5979 | 5980 | // The elements array cannot be left unpopulated |
| ... | ... | @@ -5986,7 +5987,20 @@ ZigValue *get_the_one_possible_value(CodeGen *g, ZigType *type_entry) { |
| 5986 | 5987 | ZigValue *elem_val = &result->data.x_array.data.s_none.elements[i]; |
| 5987 | 5988 | copy_const_val(g, elem_val, get_the_one_possible_value(g, elem_type)); |
| 5988 | 5989 | } |
| 5990 | } else if (result->type->id == ZigTypeIdUnion) { |
| 5991 | // The payload/tag fields cannot be left unpopulated |
| 5992 | ZigType *union_type = result->type; |
| 5993 | assert(union_type->data.unionation.src_field_count == 1); |
| 5994 | TypeUnionField *only_field = &union_type->data.unionation.fields[0]; |
| 5995 | ZigType *field_type = resolve_union_field_type(g, only_field); |
| 5996 | assert(field_type); |
| 5997 | bigint_init_unsigned(&result->data.x_union.tag, 0); |
| 5998 | result->data.x_union.payload = g->pass1_arena->create<ZigValue>(); |
| 5999 | copy_const_val(g, result->data.x_union.payload, |
| 6000 | get_the_one_possible_value(g, field_type)); |
| 5989 | 6001 | } else if (result->type->id == ZigTypeIdPointer) { |
| 6002 | // Make sure nobody can modify the constant value |
| 6003 | result->data.x_ptr.mut = ConstPtrMutComptimeConst; |
| 5990 | 6004 | result->data.x_ptr.special = ConstPtrSpecialRef; |
| 5991 | 6005 | result->data.x_ptr.data.ref.pointee = get_the_one_possible_value(g, result->type->data.pointer.child_type); |
| 5992 | 6006 | } |