diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2025-06-03 14:49:40 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-03 14:49:40 +0200 |
| commit | fcf0d4efa152844a5b0f54b136d3c756e85bcc29 (patch) | |
| tree | 025ffeee53e9783d4a3249d025da429e9329c8e2 | |
| parent | 8f2a1cafd3219565fa0afa7dc19bd9a61c9e8663 (diff) | |
| parent | 0f5e30783cd3b13ff41a2e57f68795e02502c27c (diff) | |
Merge pull request #5264 from LeandroLibanio28H/5243-fix-scope-attribute-proc-grouping
Fix scope attribute proc grouping (#5243 )
| -rw-r--r-- | src/check_expr.cpp | 43 |
1 files changed, 6 insertions, 37 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 95a724d9b..ce1ac51ea 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -5378,16 +5378,6 @@ gb_internal Entity *check_selector(CheckerContext *c, Operand *operand, Ast *nod return nullptr; } - check_entity_decl(c, entity, nullptr, nullptr); - if (entity->kind == Entity_ProcGroup) { - operand->mode = Addressing_ProcGroup; - operand->proc_group = entity; - - add_type_and_value(c, operand->expr, operand->mode, operand->type, operand->value); - return entity; - } - GB_ASSERT_MSG(entity->type != nullptr, "%.*s (%.*s)", LIT(entity->token.string), LIT(entity_strings[entity->kind])); - if (!is_entity_exported(entity, allow_builtin)) { gbString sel_str = expr_to_string(selector); error(node, "'%s' is not exported by '%.*s'", sel_str, LIT(import_name)); @@ -5398,36 +5388,15 @@ gb_internal Entity *check_selector(CheckerContext *c, Operand *operand, Ast *nod // return nullptr; } + check_entity_decl(c, entity, nullptr, nullptr); if (entity->kind == Entity_ProcGroup) { - Array<Entity *> procs = entity->ProcGroup.entities; - bool skip = false; - for (Entity *p : procs) { - Type *t = base_type(p->type); - if (t == t_invalid) { - continue; - } - - Operand x = {}; - x.mode = Addressing_Value; - x.type = t; - if (type_hint != nullptr) { - if (check_is_assignable_to(c, &x, type_hint)) { - entity = p; - skip = true; - break; - } - } - } + operand->mode = Addressing_ProcGroup; + operand->proc_group = entity; - if (!skip) { - GB_ASSERT(entity != nullptr); - operand->mode = Addressing_ProcGroup; - operand->type = t_invalid; - operand->expr = node; - operand->proc_group = entity; - return entity; - } + add_type_and_value(c, operand->expr, operand->mode, operand->type, operand->value); + return entity; } + GB_ASSERT_MSG(entity->type != nullptr, "%.*s (%.*s)", LIT(entity->token.string), LIT(entity_strings[entity->kind])); } } |