mirror of
https://github.com/odin-lang/Odin.git
synced 2026-05-29 15:15:08 +00:00
Allow implicit conversion between boolean types within or_return
This is to improve the experience using third-party code, especially foreign C-like code which may use a distinct boolean or a different sized one
This commit is contained in:
@@ -7887,8 +7887,11 @@ gb_internal ExprKind check_or_return_expr(CheckerContext *c, Operand *o, Ast *no
|
||||
rhs.type = right_type;
|
||||
rhs.mode = Addressing_Value;
|
||||
|
||||
// TODO(bill): better error message
|
||||
if (!check_is_assignable_to(c, &rhs, end_type)) {
|
||||
if (is_type_boolean(right_type) && is_type_boolean(end_type)) {
|
||||
// NOTE(bill): allow implicit conversion between boolean types
|
||||
// within 'or_return' to improve the experience using third-party code
|
||||
} else if (!check_is_assignable_to(c, &rhs, end_type)) {
|
||||
// TODO(bill): better error message
|
||||
gbString a = type_to_string(right_type);
|
||||
gbString b = type_to_string(end_type);
|
||||
gbString ret_type = type_to_string(result_type);
|
||||
|
||||
Reference in New Issue
Block a user