aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-09-01 15:11:53 +0100
committergingerBill <bill@gingerbill.org>2022-09-01 15:11:53 +0100
commited73441a4c2a3828626709d807b70bbd53b7a161 (patch)
treef34b89aba8c86f04a044e453b981f20e2067b670 /src
parent4c5672119a815f602750884add64c6888b15c193 (diff)
Fix code generation related to Objective-C related `x->y()` calls
Diffstat (limited to 'src')
-rw-r--r--src/check_expr.cpp5
-rw-r--r--src/llvm_backend_proc.cpp5
2 files changed, 6 insertions, 4 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 9c2d20781..54dc081cf 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -8769,7 +8769,10 @@ ExprKind check_selector_call_expr(CheckerContext *c, Operand *o, Ast *node, Type
Ast *first_arg = x.expr->SelectorExpr.expr;
GB_ASSERT(first_arg != nullptr);
- first_arg->state_flags |= StateFlag_SelectorCallExpr;
+ Entity *e = entity_of_node(se->expr);
+ if (!(e != nullptr && (e->kind == Entity_Procedure || e->kind == Entity_ProcGroup))) {
+ first_arg->state_flags |= StateFlag_SelectorCallExpr;
+ }
Type *pt = base_type(x.type);
GB_ASSERT(pt->kind == Type_Proc);
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index f85d8397c..d9f4e0c0d 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -2867,9 +2867,9 @@ lbValue lb_build_call_expr_internal(lbProcedure *p, Ast *expr) {
return y;
}
- Ast *pexpr = unparen_expr(ce->proc);
+ Ast *proc_expr = unparen_expr(ce->proc);
if (proc_mode == Addressing_Builtin) {
- Entity *e = entity_of_node(pexpr);
+ Entity *e = entity_of_node(proc_expr);
BuiltinProcId id = BuiltinProc_Invalid;
if (e != nullptr) {
id = cast(BuiltinProcId)e->Builtin.id;
@@ -2881,7 +2881,6 @@ lbValue lb_build_call_expr_internal(lbProcedure *p, Ast *expr) {
// NOTE(bill): Regular call
lbValue value = {};
- Ast *proc_expr = unparen_expr(ce->proc);
Entity *proc_entity = entity_of_node(proc_expr);
if (proc_entity != nullptr) {