diff options
| author | gingerBill <bill@gingerbill.org> | 2022-10-11 21:21:56 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2022-10-11 21:21:56 +0100 |
| commit | 047d45584ec76cf952d040066d00bdd312219a83 (patch) | |
| tree | 02230bc694680bb51db47ca51ac5eb579b64389f /src/check_expr.cpp | |
| parent | 970ac226479d84889e83f7451d34b5d566e71400 (diff) | |
Fix #2016 when passing an untyped integer to a generic `typeid` parameter
Diffstat (limited to 'src/check_expr.cpp')
| -rw-r--r-- | src/check_expr.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 0686d9cb2..6edd4a93c 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -6413,7 +6413,9 @@ CallArgumentError check_polymorphic_record_type(CheckerContext *c, Operand *oper if (e->kind == Entity_TypeName) { if (o->mode != Addressing_Type) { if (show_error) { - error(o->expr, "Expected a type for the argument '%.*s'", LIT(e->token.string)); + gbString expr = expr_to_string(o->expr); + error(o->expr, "Expected a type for the argument '%.*s', got %s", LIT(e->token.string), expr); + gb_string_free(expr); } err = CallArgumentError_WrongTypes; } @@ -6456,6 +6458,10 @@ CallArgumentError check_polymorphic_record_type(CheckerContext *c, Operand *oper // add_type_info_type(c, o->type); } + if (show_error && err) { + return err; + } + { bool failure = false; Entity *found_entity = find_polymorphic_record_entity(c, original_type, param_count, ordered_operands, &failure); |