Fix vetting

This commit is contained in:
gingerBill
2018-12-31 16:37:27 +00:00
parent aa156e4bfc
commit 4167168c63
2 changed files with 12 additions and 8 deletions
+1 -2
View File
@@ -1,7 +1,6 @@
package log package log
import "core:fmt"; import "core:fmt"
import "core:runtime";
Level :: enum { Level :: enum {
Debug, Debug,
+8 -3
View File
@@ -434,8 +434,10 @@ void init_vetted_entity(VettedEntity *ve, VettedEntityKind kind, Entity *entity,
GB_COMPARE_PROC(vetted_entity_variable_pos_cmp) { GB_COMPARE_PROC(vetted_entity_variable_pos_cmp) {
Entity *x = (*cast(VettedEntity **)a)->entity; Entity *x = (cast(VettedEntity *)a)->entity;
Entity *y = (*cast(VettedEntity **)b)->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); return token_pos_cmp(x->token.pos, y->token.pos);
} }
@@ -500,6 +502,9 @@ bool check_vet_unused(Checker *c, Entity *e, VettedEntity *ve) {
if ((e->flags&EntityFlag_Used) == 0) { if ((e->flags&EntityFlag_Used) == 0) {
switch (e->kind) { switch (e->kind) {
case Entity_Variable: case Entity_Variable:
if (e->scope->flags & (ScopeFlag_Global|ScopeFlag_Type|ScopeFlag_File)) {
return false;
}
case Entity_ImportName: case Entity_ImportName:
case Entity_LibraryName: case Entity_LibraryName:
gb_zero_item(ve); gb_zero_item(ve);
@@ -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) { for_array(i, vetted_entities) {
auto ve = vetted_entities[i]; auto ve = vetted_entities[i];