Skip to content

Commit

Permalink
Improve error message on undefined operators
Browse files Browse the repository at this point in the history
  • Loading branch information
gingerBill committed Mar 2, 2023
1 parent 99e2f0c commit 2d71ab6
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/check_expr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down

0 comments on commit 2d71ab6

Please sign in to comment.