diff options
| author | gingerBill <bill@gingerbill.org> | 2023-03-02 14:54:27 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-03-02 14:54:27 +0000 |
| commit | 2d71ab6f2907c14651da8fb231a695b4a60f2c68 (patch) | |
| tree | 16e2543fdaa9821bf03655dc57a5b0eb35c67669 | |
| parent | 99e2f0c91ed4f6cc26c0ebf8a9c904f2b7c65894 (diff) | |
Improve error message on undefined operatorsdev-2023-03
| -rw-r--r-- | src/check_expr.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index b4836416e..5338c0b67 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -2455,12 +2455,11 @@ gb_internal void check_comparison(CheckerContext *c, Ast *node, Operand *x, Oper } if (!defined) { - if (x->type == err_type && is_operand_nil(*x)) { - err_type = y->type; - } - gbString type_string = type_to_string(err_type, temporary_allocator()); + gbString xs = type_to_string(x->type, temporary_allocator()); + gbString ys = type_to_string(y->type, temporary_allocator()); err_str = gb_string_make(temporary_allocator(), - gb_bprintf("operator '%.*s' not defined for type '%s'", LIT(token_strings[op]), type_string)); + gb_bprintf("operator '%.*s' not defined between the types '%s' and '%s'", LIT(token_strings[op]), xs, ys) + ); } else { Type *comparison_type = x->type; if (x->type == err_type && is_operand_nil(*x)) { |