diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 20918c8f9..12655460b 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -1,3 +1,5 @@ +#include + enum CallArgumentError { CallArgumentError_None, CallArgumentError_NoneProcedureType, @@ -5373,16 +5375,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)); @@ -5393,6 +5385,16 @@ 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 (entity->kind == Entity_ProcGroup) { Array procs = entity->ProcGroup.entities; bool skip = false;