Implement a single nbErrors counter inside generic diagnostic code

This commit is contained in:
Rangi42
2025-07-26 12:48:25 -04:00
parent ac632d9223
commit 92acb6e547
10 changed files with 61 additions and 81 deletions

View File

@@ -336,14 +336,14 @@ int main(int argc, char *argv[]) {
break;
case 'X': {
unsigned long maxErrors = strtoul(musl_optarg, &endptr, 0);
uint64_t maxErrors = strtoul(musl_optarg, &endptr, 0);
if (musl_optarg[0] == '\0' || *endptr != '\0') {
fatal("Invalid argument for option 'X'");
}
if (maxErrors > UINT_MAX) {
fatal("Argument for option 'X' must be between 0 and %u", UINT_MAX);
if (maxErrors > UINT64_MAX) {
fatal("Argument for option 'X' must be between 0 and %" PRIu64, UINT64_MAX);
}
options.maxErrors = maxErrors;
@@ -416,7 +416,9 @@ int main(int argc, char *argv[]) {
// Perform parse (`yy::parser` is auto-generated from `parser.y`)
if (yy::parser parser; parser.parse() != 0) {
forceError();
if (warnings.nbErrors == 0) {
warnings.nbErrors = 1;
}
}
if (!fstk_FailedOnMissingInclude()) {