diff options
Diffstat (limited to 'src/checker.cpp')
| -rw-r--r-- | src/checker.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/checker.cpp b/src/checker.cpp index cef266f7e..4b2ddef8a 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -818,8 +818,8 @@ void add_declaration_dependency(Checker *c, Entity *e) { return; } if (c->context.decl != nullptr) { - DeclInfo *decl = decl_info_of_entity(&c->info, e); - if (decl) add_dependency(c->context.decl, e); + // DeclInfo *decl = decl_info_of_entity(&c->info, e); + add_dependency(c->context.decl, e); } } @@ -1213,6 +1213,9 @@ void add_entity_use(Checker *c, AstNode *identifier, Entity *entity) { if (identifier->kind != AstNode_Ident) { return; } + if (entity->identifier == nullptr) { + entity->identifier = identifier; + } HashKey key = hash_node(identifier); map_set(&c->info.uses, key, entity); add_declaration_dependency(c, entity); // TODO(bill): Should this be here? @@ -1435,10 +1438,14 @@ void add_dependency_to_map(PtrSet<Entity *> *map, CheckerInfo *info, Entity *ent if (entity == nullptr) { return; } + + String name = entity->token.string; + if (entity->type != nullptr && is_type_polymorphic(entity->type)) { + DeclInfo *decl = decl_info_of_entity(info, entity); - if (decl->gen_proc_type == nullptr) { + if (decl != nullptr && decl->gen_proc_type == nullptr) { return; } } @@ -1447,6 +1454,7 @@ void add_dependency_to_map(PtrSet<Entity *> *map, CheckerInfo *info, Entity *ent return; } + ptr_set_add(map, entity); DeclInfo *decl = decl_info_of_entity(info, entity); if (decl != nullptr) { |