Make nbErrors not extern

This commit is contained in:
Rangi42
2025-07-21 19:49:08 -04:00
parent 61730be6ce
commit ee0f311c10
3 changed files with 19 additions and 8 deletions

View File

@@ -7,8 +7,6 @@
#include "diagnostics.hpp"
extern unsigned int nbErrors;
enum WarningLevel {
LEVEL_DEFAULT, // Warnings that are enabled by default
LEVEL_ALL, // Warnings that probably indicate an error
@@ -82,4 +80,7 @@ void error(char const *fmt, ...);
// once.
void error(std::function<void()> callback);
void forceError();
void requireZeroErrors();
#endif // RGBDS_ASM_WARNING_HPP

View File

@@ -418,8 +418,8 @@ int main(int argc, char *argv[]) {
fstk_Init(mainFileName, maxDepth);
// Perform parse (`yy::parser` is auto-generated from `parser.y`)
if (yy::parser parser; parser.parse() != 0 && nbErrors == 0) {
nbErrors = 1;
if (yy::parser parser; parser.parse() != 0) {
forceError();
}
if (!fstk_FailedOnMissingInclude()) {
@@ -432,10 +432,7 @@ int main(int argc, char *argv[]) {
sect_CheckStack();
}
if (nbErrors != 0) {
fprintf(stderr, "Assembly aborted with %u error%s!\n", nbErrors, nbErrors == 1 ? "" : "s");
exit(1);
}
requireZeroErrors();
// If parse aborted due to missing an include, and `-MG` was given, exit normally
if (fstk_FailedOnMissingInclude()) {

View File

@@ -125,6 +125,19 @@ void fatal(char const *fmt, ...) {
exit(1);
}
void forceError() {
if (nbErrors == 0) {
nbErrors = 1;
}
}
void requireZeroErrors() {
if (nbErrors != 0) {
fprintf(stderr, "Assembly aborted with %u error%s!\n", nbErrors, nbErrors == 1 ? "" : "s");
exit(1);
}
}
void warning(WarningID id, char const *fmt, ...) {
char const *flag = warnings.warningFlags[id].name;
va_list args;