| ... | @@ -21389,9 +21389,9 @@ static IrInstruction *ir_analyze_union_tag(IrAnalyze *ira, IrInstruction *source | ... | @@ -21389,9 +21389,9 @@ static IrInstruction *ir_analyze_union_tag(IrAnalyze *ira, IrInstruction *source |
| 21389 | if (type_is_invalid(value->value->type)) | 21389 | if (type_is_invalid(value->value->type)) |
| 21390 | return ira->codegen->invalid_instruction; | 21390 | return ira->codegen->invalid_instruction; |
| 21391 | | 21391 | |
| 21392 | if (value->value->type->id == ZigTypeIdEnum) { | 21392 | if (value->value->type->id == ZigTypeIdEnum || |
| | 21393 | value->value->type->id == ZigTypeIdEnumLiteral) |
| 21393 | return value; | 21394 | return value; |
| 21394 | } | | |
| 21395 | | 21395 | |
| 21396 | if (value->value->type->id != ZigTypeIdUnion) { | 21396 | if (value->value->type->id != ZigTypeIdUnion) { |
| 21397 | ir_add_error(ira, value, | 21397 | ir_add_error(ira, value, |
| ... | @@ -22352,6 +22352,14 @@ static IrInstruction *ir_analyze_instruction_enum_tag_name(IrAnalyze *ira, IrIns | ... | @@ -22352,6 +22352,14 @@ static IrInstruction *ir_analyze_instruction_enum_tag_name(IrAnalyze *ira, IrIns |
| 22352 | if (type_is_invalid(target->value->type)) | 22352 | if (type_is_invalid(target->value->type)) |
| 22353 | return ira->codegen->invalid_instruction; | 22353 | return ira->codegen->invalid_instruction; |
| 22354 | | 22354 | |
| | 22355 | if (target->value->type->id == ZigTypeIdEnumLiteral) { |
| | 22356 | IrInstruction *result = ir_const(ira, &instruction->base, nullptr); |
| | 22357 | Buf *field_name = target->value->data.x_enum_literal; |
| | 22358 | ZigValue *array_val = create_const_str_lit(ira->codegen, field_name)->data.x_ptr.data.ref.pointee; |
| | 22359 | init_const_slice(ira->codegen, result->value, array_val, 0, buf_len(field_name), true); |
| | 22360 | return result; |
| | 22361 | } |
| | 22362 | |
| 22355 | assert(target->value->type->id == ZigTypeIdEnum); | 22363 | assert(target->value->type->id == ZigTypeIdEnum); |
| 22356 | | 22364 | |
| 22357 | if (instr_is_comptime(target)) { | 22365 | if (instr_is_comptime(target)) { |