aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2018-12-31 16:37:27 +0000
committergingerBill <bill@gingerbill.org>2018-12-31 16:37:27 +0000
commit4167168c6334b4c603230eb018e4d7866b7e734c (patch)
tree97ea272b0f4ca4318fdcdd527b58f6c7435b7a38 /src/checker.cpp
parentaa156e4bfce1cce0042b042317ac7213eb8f428b (diff)
Fix vetting
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index a54061cbd..24539354b 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -434,8 +434,10 @@ void init_vetted_entity(VettedEntity *ve, VettedEntityKind kind, Entity *entity,
GB_COMPARE_PROC(vetted_entity_variable_pos_cmp) {
- Entity *x = (*cast(VettedEntity **)a)->entity;
- Entity *y = (*cast(VettedEntity **)b)->entity;
+ Entity *x = (cast(VettedEntity *)a)->entity;
+ Entity *y = (cast(VettedEntity *)b)->entity;
+ GB_ASSERT(x != nullptr);
+ GB_ASSERT(y != nullptr);
return token_pos_cmp(x->token.pos, y->token.pos);
}
@@ -500,9 +502,12 @@ bool check_vet_unused(Checker *c, Entity *e, VettedEntity *ve) {
if ((e->flags&EntityFlag_Used) == 0) {
switch (e->kind) {
case Entity_Variable:
+ if (e->scope->flags & (ScopeFlag_Global|ScopeFlag_Type|ScopeFlag_File)) {
+ return false;
+ }
case Entity_ImportName:
case Entity_LibraryName:
- gb_zero_item(ve);
+ gb_zero_item(ve);
ve->kind = VettedEntity_Unused;
ve->entity = e;
return true;
@@ -534,7 +539,7 @@ void check_scope_usage(Checker *c, Scope *scope) {
}
}
- gb_sort_array(vetted_entities.data, vetted_entities.count, vetted_entity_variable_pos_cmp);
+ gb_sort(vetted_entities.data, vetted_entities.count, gb_size_of(VettedEntity), vetted_entity_variable_pos_cmp);
for_array(i, vetted_entities) {
auto ve = vetted_entities[i];