diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 6f6f7da70..6ecb9368c 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -10155,7 +10155,12 @@ gb_internal ExprKind check_implicit_selector_expr(CheckerContext *c, Operand *o, o->type = th; bool ok = attempt_implicit_selector_expr(c, o, ise, th); - if (!ok) { + if (ok) { + Type *bt = base_type(o->type); + if (bt->kind == Type_Enum) { + add_entity_use(c, ise->selector, scope_lookup_current(bt->Enum.scope, ise->selector->Ident.interned)); + } + } else { String name = ise->selector->Ident.token.string; if (is_type_enum(th)) { diff --git a/src/checker.cpp b/src/checker.cpp index 48423df93..8cca4c026 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -2139,7 +2139,7 @@ gb_internal void add_type_and_value(CheckerContext *ctx, Ast *expr, AddressingMo gb_internal void add_semantic_ident(CheckerInfo *i, Ast *identifier, Entity *entity, bool definition) { Token const &token = identifier->Ident.token; - if (build_context.export_semantics_format != SemanticsFormat_Invalid && (token.flags & TokenFlag_Synthesized) == 0) { + if (build_context.export_semantics_format != SemanticsFormat_Invalid && (token.flags & TokenFlag_Synthesized) == 0 && !is_error_muted()) { per_thread_array_add(&i->semantic_ident_queue, SemanticIdent{entity, token.pos.file_id, token.pos.offset, definition}); } }