diff --git a/core/log/log.odin b/core/log/log.odin index 4a3af3cd2..13e370b91 100644 --- a/core/log/log.odin +++ b/core/log/log.odin @@ -1,7 +1,6 @@ package log -import "core:fmt"; -import "core:runtime"; +import "core:fmt" Level :: enum { Debug, @@ -62,7 +61,7 @@ destroy_multi_logger ::proc(log : ^Logger) { log^ = nil_logger(); } -multi_logger_proc :: proc(logger_data: rawptr, level: Level, text: string, +multi_logger_proc :: proc(logger_data: rawptr, level: Level, text: string, options: Options, location := #caller_location) { data := cast(^Multi_Logger_Data)logger_data; if data.loggers == nil || len(data.loggers) == 0 do return; @@ -87,4 +86,4 @@ logf :: proc(level : Level, fmt_str : string, args : ..any, location := #caller_ logger := context.logger; str := len(args) > 0 ? fmt.tprintf(fmt_str, ..args) : fmt.tprint(fmt_str); //NOTE(Hoej): While tprint isn't thread-safe, no logging is. logger.procedure(logger.data, level, str, logger.options, location); -} \ No newline at end of file +} 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];