warnings: fix early exit of warnings treated as errors

Treating warnings as errors caused Bison to exit earlier than needed, making it
hide warnings that would have been printed had -Werror not been set.

Also, fix a bug that caused some context information of errors to not be
shown.

* src/complain.c (complaint_issued): Rename as...
(complaint_status): This, and change its type from boolean to
* src/complain.h (err_status): This, new enumeration.
* src/main.c (main): Adjust (only finish early if an actual complaint was
risen, not a mere warning treated an error).
* src/reader.c: Adjust.
This commit is contained in:
Theophile Ranquet
2012-10-26 18:12:53 +00:00
parent 8f6bbe0c10
commit 697a8022c6
4 changed files with 22 additions and 8 deletions

View File

@@ -70,7 +70,18 @@ void complain_indent (location const *loc, warnings flags, unsigned *indent,
char const *message, ...)
__attribute__ ((__format__ (__printf__, 4, 5)));
/** Warnings treated as errors shouldn't stop the execution as regular errors
should (because due to their nature, it is safe to go on). Thus, there are
three possible execution statuses. */
typedef enum
{
status_none,
status_warning_as_error,
status_complaint
} err_status;
/** Whether an error was reported. */
extern bool complaint_issued;
extern err_status complaint_status;
#endif /* !COMPLAIN_H_ */