Yacc-like behavior (e.g., always generate y.tab.c), but to report
incompatibilities as warnings: "-y -Wno-error=yacc".
-*** Warning categories are now displayed and prefix changes
+*** The display of warnings is now richer
- For instance:
+ The option that controls a given warning is now displayed:
- foo.y:4.6: warning: type clash on default action: <foo> != <bar> [-Wother]
+ foo.y:4.6: warning: type clash on default action: <foo> != <bar> [-Wother]
- In the case of warnings treated as errors, the suffix is displayed, in a
- manner similar to gcc, as [-Werror=CATEGORY]. Also, the prefix is changed
- from "warning: " to "error: ".
+ In the case of warnings treated as errors, the prefix is changed from
+ "warning: " to "error: ", and the suffix is displayed, in a manner similar
+ to gcc, as [-Werror=CATEGORY].
- For instance, considering the above change, an output for -Werror=other
- would have been:
+ For instance, where the previous version of Bison would report (and exit
+ with failure):
bison: warnings being treated as errors
- input.y:1.1: warning: stray ',' treated as white space [-Wother]
+ input.y:1.1: warning: stray ',' treated as white space
- But it is actually:
+ it now reports:
- bison: warnings being treated as errors
input.y:1.1: error: stray ',' treated as white space [-Werror=other]
*** Deprecated constructs
{
const char* prefix =
flags & (errors_flag | complaint) ? _("error") : _("warning");
- if (flags & complaint)
+ if (flags & (complaint | errors_flag))
complaint_issued = true;
- set_warning_issued (flags);
error_message (loc, flags,
indent_ptr && *indent_ptr ? NULL : prefix,
message, args);
complains (&loc, flags, message, args);
va_end (args);
}
-
-
-/*--------------------------------.
-| Report a warning, and proceed. |
-`--------------------------------*/
-
-void
-set_warning_issued (warnings warning)
-{
- static bool warning_issued = false;
- if (!warning_issued && (warning & warnings_flag & errors_flag))
- {
- fprintf (stderr, "%s: warnings being treated as errors\n", program_name);
- complaint_issued = true;
- }
- warning_issued = true;
-}
# include "location.h"
+/* Sub-messages indent. */
+#define SUB_INDENT (4)
+
/*-------------.
| --warnings. |
`-------------*/
/** Display a "[-Wyacc]" like message on stderr. */
void warnings_print_categories (warnings warn_flags);
-/* Sub-messages indent. */
-#define SUB_INDENT (4)
-
-/** Record that a warning is about to be issued, and treat it as an
- error if <tt>warnings_flag & Werror</tt>. This is exported
- only for the sake of Yacc-compatible conflict reports in conflicts.c.
- All other warnings should be implemented in complain.c and should use
- the normal warning format. */
-void set_warning_issued (warnings warning);
-
/** Make a complaint, but don't specify any location. */
void complain (warnings flags, char const *message, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
# -Werror is not disabled by -Wnone or equivalent.
AT_BISON_CHECK([[-Werror,none,yacc input.y]], [[1]], [[]], [[stderr]])
AT_CHECK([[sed 's/^.*bison:/bison:/' stderr]], [[0]],
-[[bison: warnings being treated as errors
-input.y:2.1-7: error: POSIX Yacc forbids dashes in symbol names: foo-bar [-Werror=yacc]
+[[input.y:2.1-7: error: POSIX Yacc forbids dashes in symbol names: foo-bar [-Werror=yacc]
]])
[mv stderr experr]
AT_BISON_CHECK([[-Werror,no-all,yacc input.y]], [[1]], [[]], [[experr]])