diff options
| author | gingerBill <bill@gingerbill.org> | 2017-12-10 11:35:11 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2017-12-10 11:35:11 +0000 |
| commit | 3c6f90e5524d38bdd30750eb04441a1897bcd8dd (patch) | |
| tree | 50dc37f196b7a2d0c40e1382950511654d1333a2 /src/check_decl.cpp | |
| parent | 3703ca4df47134e0c274cf5096d14c9323331ff0 (diff) | |
Fix proc groups from import names
Diffstat (limited to 'src/check_decl.cpp')
| -rw-r--r-- | src/check_decl.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 817377baf..97acc20cd 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -715,12 +715,12 @@ void check_var_decl(Checker *c, Entity *e, Entity **entities, isize entity_count void check_proc_group_decl(Checker *c, Entity *pg_entity, DeclInfo *d) { GB_ASSERT(pg_entity->kind == Entity_ProcGroup); auto *pge = &pg_entity->ProcGroup; + String proc_group_name = pg_entity->token.string; ast_node(pg, ProcGroup, d->init_expr); array_init(&pge->entities, c->allocator, pg->args.count); - PtrSet<Entity *> entity_map = {}; ptr_set_init(&entity_map, heap_allocator()); defer (ptr_set_destroy(&entity_map)); @@ -735,12 +735,14 @@ void check_proc_group_decl(Checker *c, Entity *pg_entity, DeclInfo *d) { e = check_selector(c, &o, arg, nullptr); } if (e == nullptr) { - error(arg, "Expected a valid entity name in procedure group"); + error(arg, "Expected a valid entity name in procedure group, got %.*s", LIT(ast_node_strings[arg->kind])); continue; } if (e->kind == Entity_Variable) { if (!is_type_proc(e->type)) { - error(arg, "Expected a procedure variable"); + gbString s = type_to_string(e->type); + defer (gb_string_free(s)); + error(arg, "Expected a procedure, got %s", s); continue; } } else if (e->kind != Entity_Procedure) { @@ -753,7 +755,6 @@ void check_proc_group_decl(Checker *c, Entity *pg_entity, DeclInfo *d) { continue; } ptr_set_add(&entity_map, e); - array_add(&pge->entities, e); } @@ -816,6 +817,8 @@ void check_proc_group_decl(Checker *c, Entity *pg_entity, DeclInfo *d) { } } } + + pg_entity->type = t_invalid; } void check_entity_decl(Checker *c, Entity *e, DeclInfo *d, Type *named_type) { |