aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2018-07-08 11:03:56 +0100
committergingerBill <bill@gingerbill.org>2018-07-08 11:03:56 +0100
commit0e91298fd1d16de9bc0c11b9ccf0dcd7e43603a2 (patch)
tree453c6f5960ee3eb2dc52a01524f0de8251b0acee /src/check_expr.cpp
parente515220694c79f44f0ee2783287667dc4ab5e5fe (diff)
Rename `free` to `delete` for non pointer types
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 6079fa202..8b3e6dfe7 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -4496,6 +4496,23 @@ CallArgumentData check_call_arguments(CheckerContext *c, Operand *operand, Type
Array<Entity *> procs = proc_group_entities(c, *operand);
+ if (procs.count == 1) {
+ Ast *ident = operand->expr;
+ while (ident->kind == Ast_SelectorExpr) {
+ Ast *s = ident->SelectorExpr.selector;
+ ident = s;
+ }
+
+ Entity *e = procs[0];
+
+ CallArgumentData data = {};
+ CallArgumentError err = call_checker(c, call, e->type, e, operands, CallArgumentMode_ShowErrors, &data);
+ Entity *entity_to_use = data.gen_entity != nullptr ? data.gen_entity : e;
+ add_entity_use(c, ident, entity_to_use);
+
+ return data;
+ }
+
ValidIndexAndScore *valids = gb_alloc_array(heap_allocator(), ValidIndexAndScore, procs.count);
isize valid_count = 0;
defer (gb_free(heap_allocator(), valids));