| ... | @@ -5769,6 +5769,10 @@ OnePossibleValue type_has_one_possible_value(CodeGen *g, ZigType *type_entry) { | ... | @@ -5769,6 +5769,10 @@ OnePossibleValue type_has_one_possible_value(CodeGen *g, ZigType *type_entry) { |
| 5769 | type_entry->one_possible_value = OnePossibleValueNo; | 5769 | type_entry->one_possible_value = OnePossibleValueNo; |
| 5770 | for (size_t i = 0; i < type_entry->data.structure.src_field_count; i += 1) { | 5770 | for (size_t i = 0; i < type_entry->data.structure.src_field_count; i += 1) { |
| 5771 | TypeStructField *field = type_entry->data.structure.fields[i]; | 5771 | TypeStructField *field = type_entry->data.structure.fields[i]; |
| | 5772 | if (field->is_comptime) { |
| | 5773 | // If this field is comptime then the field can only be one possible value |
| | 5774 | continue; |
| | 5775 | } |
| 5772 | OnePossibleValue opv = (field->type_entry != nullptr) ? | 5776 | OnePossibleValue opv = (field->type_entry != nullptr) ? |
| 5773 | type_has_one_possible_value(g, field->type_entry) : | 5777 | type_has_one_possible_value(g, field->type_entry) : |
| 5774 | type_val_resolve_has_one_possible_value(g, field->type_val); | 5778 | type_val_resolve_has_one_possible_value(g, field->type_val); |
| ... | @@ -5825,6 +5829,10 @@ ZigValue *get_the_one_possible_value(CodeGen *g, ZigType *type_entry) { | ... | @@ -5825,6 +5829,10 @@ ZigValue *get_the_one_possible_value(CodeGen *g, ZigType *type_entry) { |
| 5825 | result->data.x_struct.fields = alloc_const_vals_ptrs(g, field_count); | 5829 | result->data.x_struct.fields = alloc_const_vals_ptrs(g, field_count); |
| 5826 | for (size_t i = 0; i < field_count; i += 1) { | 5830 | for (size_t i = 0; i < field_count; i += 1) { |
| 5827 | TypeStructField *field = struct_type->data.structure.fields[i]; | 5831 | TypeStructField *field = struct_type->data.structure.fields[i]; |
| | 5832 | if (field->is_comptime) { |
| | 5833 | copy_const_val(g, result->data.x_struct.fields[i], field->init_val); |
| | 5834 | continue; |
| | 5835 | } |
| 5828 | ZigType *field_type = resolve_struct_field_type(g, field); | 5836 | ZigType *field_type = resolve_struct_field_type(g, field); |
| 5829 | assert(field_type != nullptr); | 5837 | assert(field_type != nullptr); |
| 5830 | result->data.x_struct.fields[i] = get_the_one_possible_value(g, field_type); | 5838 | result->data.x_struct.fields[i] = get_the_one_possible_value(g, field_type); |