Fix union(T){} constant initialization

This commit is contained in:
gingerBill
2025-10-31 09:13:10 +00:00
parent d062203ff9
commit f5d080789f
+6 -1
View File
@@ -691,9 +691,14 @@ gb_internal lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, lb
} else if (bt->Union.variants.count == 1) { } else if (bt->Union.variants.count == 1) {
if (value.kind == ExactValue_Compound) { if (value.kind == ExactValue_Compound) {
ast_node(cl, CompoundLit, value.value_compound); ast_node(cl, CompoundLit, value.value_compound);
if (cl->elems.count == 0 && cl->type == nullptr) { if (cl->elems.count == 0) {
if (cl->type == nullptr) {
return lb_const_nil(m, original_type); return lb_const_nil(m, original_type);
} }
if (are_types_identical(type_of_expr(cl->type), original_type)) {
return lb_const_nil(m, original_type);
}
}
} }
Type *t = bt->Union.variants[0]; Type *t = bt->Union.variants[0];