Allow 'or_else' in diverging single-return

This commit is contained in:
Mustafa Furkan Bulut
2026-08-20 00:57:10 +03:00
parent 8aa0ce7291
commit 581d20c606
2 changed files with 19 additions and 8 deletions

View File

@@ -10234,15 +10234,21 @@ gb_internal ExprKind check_or_else_expr(CheckerContext *c, Operand *o, Ast *node
}
}
} else {
check_or_else_expr_no_value_error(c, name, x, type_hint);
if (right_type == nullptr || !y_is_diverging) {
check_or_else_expr_no_value_error(c, name, x, type_hint);
}
}
if (left_type == nullptr) {
left_type = t_invalid;
}
o->mode = Addressing_Value;
o->type = left_type;
o->expr = node;
o->type = left_type;
if (left_type != nullptr) {
o->mode = Addressing_Value;
} else if (y_is_diverging) {
o->mode = Addressing_NoValue;
} else {
o->mode = Addressing_Value;
o->type = t_invalid;
}
return Expr_Expr;
}