aboutsummaryrefslogtreecommitdiff
path: root/src/check_decl.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2017-12-10 11:35:11 +0000
committergingerBill <bill@gingerbill.org>2017-12-10 11:35:11 +0000
commit3c6f90e5524d38bdd30750eb04441a1897bcd8dd (patch)
tree50dc37f196b7a2d0c40e1382950511654d1333a2 /src/check_decl.cpp
parent3703ca4df47134e0c274cf5096d14c9323331ff0 (diff)
Fix proc groups from import names
Diffstat (limited to 'src/check_decl.cpp')
-rw-r--r--src/check_decl.cpp11
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) {