From a9bfb3ac2e3a0f1e4c98596685e983aaf1e1f651 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 2 Apr 2024 23:39:14 +0100 Subject: [PATCH] Clarity warning and error printing --- src/error.cpp | 13 +++++++------ src/main.cpp | 7 +++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/error.cpp b/src/error.cpp index 5b12a7ab8..c92392dce 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -12,7 +12,7 @@ struct ErrorValue { struct ErrorCollector { TokenPos prev; - std::atomic count; // error+warning_count + std::atomic count; std::atomic warning_count; std::atomic in_block; @@ -62,7 +62,9 @@ gb_internal ErrorValue *get_error_value(void) { gb_internal bool any_errors(void) { return global_error_collector.count.load() != 0; } - +gb_internal bool any_warnings(void) { + return global_error_collector.warning_count.load() != 0; +} gb_internal void init_global_error_collector(void) { @@ -384,7 +386,6 @@ gb_internal void warning_va(TokenPos const &pos, TokenPos end, char const *fmt, error_va(pos, end, fmt, va); return; } - global_error_collector.count.fetch_add(1); global_error_collector.warning_count.fetch_add(1); mutex_lock(&global_error_collector.mutex); @@ -601,7 +602,7 @@ gb_internal void syntax_error_with_verbose(TokenPos pos, TokenPos end, char cons gb_internal void compiler_error(char const *fmt, ...) { - if (any_errors()) { + if (any_errors() || any_warnings()) { print_all_errors(); } @@ -617,7 +618,7 @@ gb_internal void compiler_error(char const *fmt, ...) { gb_internal void exit_with_errors(void) { - if (any_errors()) { + if (any_errors() || any_warnings()) { print_all_errors(); } gb_exit(1); @@ -651,7 +652,7 @@ gb_internal void print_all_errors(void) { } }; - GB_ASSERT(any_errors()); + GB_ASSERT(any_errors() || any_warnings()); gbFile *f = gb_file_get_standard(gbFileStandard_Error); array_sort(global_error_collector.error_values, error_value_cmp); diff --git a/src/main.cpp b/src/main.cpp index 79c3a1670..b8c21fd3b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2694,6 +2694,9 @@ int main(int arg_count, char const **arg_ptr) { print_all_errors(); return 1; } + if (any_warnings()) { + print_all_errors(); + } MAIN_TIME_SECTION("type check"); @@ -2706,6 +2709,10 @@ int main(int arg_count, char const **arg_ptr) { print_all_errors(); return 1; } + if (any_warnings()) { + print_all_errors(); + } + if (build_context.command_kind == Command_strip_semicolon) { return strip_semicolons(parser);