aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-06-20 13:47:10 +0100
committergingerBill <bill@gingerbill.org>2023-06-20 13:47:10 +0100
commit7c57dde2556b95a0ef206efd93fc23f8fd0bdf89 (patch)
tree16c86585cdd0cce610bd1af684a053710e46f499 /src/check_expr.cpp
parent9ec927b9e952cb1e82ec543c95547321273a812b (diff)
Start work on parapoly args for new and improved
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 8242d38e9..5574827d5 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -6898,9 +6898,6 @@ gb_internal CallArgumentData check_call_arguments_new_and_improved(CheckerContex
Entity *e = entity_of_node(ident);
TokenPos pos = ast_token(call).pos;
- if (pos.line == 282 && pos.column == 9 && is_type_polymorphic(proc_type)) {
- // GB_PANIC("HERE! %s\n", expr_to_string(call));
- }
CallArgumentError err = check_call_arguments_internal(c, call, proc_type, e, positional_operands, named_operands, CallArgumentMode_ShowErrors, &data);
gb_unused(err);
@@ -6908,6 +6905,7 @@ gb_internal CallArgumentData check_call_arguments_new_and_improved(CheckerContex
add_entity_use(c, ident, entity_to_use);
if (entity_to_use != nullptr) {
update_untyped_expr_type(c, operand->expr, entity_to_use->type, true);
+ add_type_and_value(c, operand->expr, operand->mode, entity_to_use->type, operand->value);
}
if (data.gen_entity != nullptr) {
Entity *e = data.gen_entity;
@@ -6931,6 +6929,7 @@ gb_internal CallArgumentData check_call_arguments_new_and_improved(CheckerContex
Type *t = base_type(entity_to_use->type);
// GB_ASSERT_MSG(!is_type_polymorphic(t), "%s", expr_to_string(call));
data.result_type = t->Proc.results;
+
}
}
} else if (pt) {
@@ -6954,17 +6953,8 @@ gb_internal CallArgumentData check_call_arguments(CheckerContext *c, Operand *op
if (all_non_poly) {
return check_call_arguments_new_and_improved(c, operand, call);
}
- }
-
- if (operand->mode != Addressing_ProcGroup) {
- bool is_poly = is_type_polymorphic(operand->type);
- bool ok = !is_poly;
- if (!ok && c->pkg->name == "bug") {
- ok = true;
- }
- if (ok) {
- return check_call_arguments_new_and_improved(c, operand, call);
- }
+ } else {
+ return check_call_arguments_new_and_improved(c, operand, call);
}
ast_node(ce, CallExpr, call);