diff options
| author | Andreas T Jonsson <mail@andreasjonsson.se> | 2024-05-16 13:48:44 +0200 |
|---|---|---|
| committer | Andreas T Jonsson <mail@andreasjonsson.se> | 2024-05-16 13:48:44 +0200 |
| commit | a93bbf6f922cd59683c9ed1aeaf5bb9940c843c1 (patch) | |
| tree | d30eb60984886812d2e36a32e501ed68f7453074 /src/error.cpp | |
| parent | 5541f602335a74c357046a603119c6b49b63e25d (diff) | |
| parent | f9fd8f0c25bb0b239e5421c39217d2f8c449911f (diff) | |
Merge branch 'master' into netbsd-ci
Diffstat (limited to 'src/error.cpp')
| -rw-r--r-- | src/error.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/error.cpp b/src/error.cpp index 688d1b34a..f5123b969 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -672,7 +672,20 @@ gb_internal int error_value_cmp(void const *a, void const *b) { return token_pos_cmp(x->pos, y->pos); } +gb_internal bool errors_already_printed = false; + gb_internal void print_all_errors(void) { + if (errors_already_printed) { + if (global_error_collector.warning_count.load() == global_error_collector.error_values.count) { + for (ErrorValue &ev : global_error_collector.error_values) { + array_free(&ev.msg); + } + array_clear(&global_error_collector.error_values); + errors_already_printed = false; + } + return; + } + auto const &escape_char = [](gbString res, u8 c) -> gbString { switch (c) { case '\n': res = gb_string_append_length(res, "\\n", 2); break; @@ -827,4 +840,6 @@ gb_internal void print_all_errors(void) { } gbFile *f = gb_file_get_standard(gbFileStandard_Error); gb_file_write(f, res, gb_string_length(res)); + + errors_already_printed = true; }
\ No newline at end of file |