mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 23:58:50 +00:00
Fix vetting
This commit is contained in:
+3
-4
@@ -1,7 +1,6 @@
|
|||||||
package log
|
package log
|
||||||
|
|
||||||
import "core:fmt";
|
import "core:fmt"
|
||||||
import "core:runtime";
|
|
||||||
|
|
||||||
Level :: enum {
|
Level :: enum {
|
||||||
Debug,
|
Debug,
|
||||||
@@ -62,7 +61,7 @@ destroy_multi_logger ::proc(log : ^Logger) {
|
|||||||
log^ = nil_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) {
|
options: Options, location := #caller_location) {
|
||||||
data := cast(^Multi_Logger_Data)logger_data;
|
data := cast(^Multi_Logger_Data)logger_data;
|
||||||
if data.loggers == nil || len(data.loggers) == 0 do return;
|
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;
|
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.
|
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);
|
logger.procedure(logger.data, level, str, logger.options, location);
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-4
@@ -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,9 +502,12 @@ 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);
|
||||||
ve->kind = VettedEntity_Unused;
|
ve->kind = VettedEntity_Unused;
|
||||||
ve->entity = e;
|
ve->entity = e;
|
||||||
return true;
|
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) {
|
for_array(i, vetted_entities) {
|
||||||
auto ve = vetted_entities[i];
|
auto ve = vetted_entities[i];
|
||||||
|
|||||||
Reference in New Issue
Block a user