warnings warnings_flag =
Wconflicts_sr | Wconflicts_rr | Wdeprecated | Wother;
-warnings errors_flag;
bool complaint_issued;
static unsigned *indent_ptr = 0;
for (i = 0; i < ARRAY_CARDINALITY (warn_names); ++i)
if (warn_flags & 1 << i)
{
- bool err = warn_flags & errors_flag;
- fprintf (stderr, "%s-W", any ? ", " : " [");
- fprintf (stderr, "%s%s", err ? "error=" : "" , warn_names[i]);
+ fprintf (stderr, "%s-W%s", any ? ", " : " [", warn_names[i]);
any = true;
}
if (any)
}
else if (warnings_flag & Wyacc)
{
- char* severity = Wyacc & errors_flag ? _("error") : _("warning");
- set_warning_issued (Wyacc);
- error_message (loc, flags, severity, message, args);
+ set_warning_issued ();
+ error_message (loc, flags, _("warning"), message, args);
}
}
else if (warnings_flag & flags)
{
- char* severity = flags & errors_flag ? _("error") : _("warning");
- set_warning_issued (flags);
- error_message (loc, flags, severity, message, args);
+ set_warning_issued ();
+ error_message (loc, flags, _("warning"), message, args);
}
}
`--------------------------------*/
void
-set_warning_issued (warnings warning)
+set_warning_issued (void)
{
static bool warning_issued = false;
- if (!warning_issued && (warning & warnings_flag & errors_flag))
+ if (!warning_issued && (warnings_flag & Werror))
{
fprintf (stderr, "%s: warnings being treated as errors\n", program_name);
complaint_issued = true;
Wdeprecated = 1 << 4, /**< Obsolete constructs. */
Wother = 1 << 5, /**< All other warnings. */
- /* Deprecated, this option now uses a second instance of this enum */
Werror = 1 << 10, /**< Warnings are treated as errors. */
-
complaint = 1 << 11, /**< All complaints. */
fatal = 1 << 12, /**< All fatal errors. */
silent = 1 << 13, /**< Do not display the warning type. */
-
- /**< All above warnings. */
- Wall = ~complaint & ~fatal & ~silent
+ Wall = ~Werror /**< All above warnings. */
} warnings;
/** What warnings are issued. */
extern warnings warnings_flag;
-/** What warnings are made errors. */
-extern warnings errors_flag;
-
/** Display a "[-Wyacc]" like message on stderr. */
void warnings_print_categories (warnings warn_flags);
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);
+void set_warning_issued (void);
/** Make a complaint, but don't specify any location. */
void complain (warnings flags, char const *message, ...)
}
if (src_total | rrc_total)
{
- if (expected_sr_conflicts == -1 && src_total)
- set_warning_issued (Wconflicts_sr);
- if (expected_rr_conflicts == -1 && rrc_total)
- set_warning_issued (Wconflicts_rr);
+ if (expected_sr_conflicts == -1 && expected_rr_conflicts == -1)
+ set_warning_issued ();
if (! yacc_flag)
fprintf (stderr, "%s: ", current_file);
conflict_report (stderr, src_total, rrc_total);
int all, int *flags, char *args)
{
if (args)
- {
- args = strtok (args, ",");
-
- /* Not sure whether we should keep this : -Werror=no-bar */
- int no = STRPREFIX_LIT ("no-", args) ? 3 : 0;
- args += no;
- int value = 0;
-
- while (args)
{
- int err = STRPREFIX_LIT ("error", args);
- if (err)
- args += (args[5] == '=') ? 6 : 5;
-
- if (!err || args[-1] == '=')
- value = XARGMATCH (option, args, keys, values);
- if (value == 0)
- {
- if (no)
- {
- if (err)
- /* Using &= ~all activates complaint, silent and fatal */
- errors_flag = Wnone;
- else
- *flags |= all;
- }
- else
- {
- if (err)
- errors_flag |= all;
- else
- *flags &= ~all;
- }
- }
- else
- {
- if (no)
+ args = strtok (args, ",");
+ while (args)
{
- if (err)
- errors_flag &= ~value;
+ int no = STRPREFIX_LIT ("no-", args) ? 3 : 0;
+ int value = XARGMATCH (option, args + no, keys, values);
+ if (value == 0)
+ {
+ if (no)
+ *flags |= all;
+ else
+ *flags &= ~all;
+ }
else
- *flags &= ~value;
+ {
+ if (no)
+ *flags &= ~value;
+ else
+ *flags |= value;
+ }
+ args = strtok (NULL, ",");
}
- else
- {
- if (err)
- {
- errors_flag |= value;
- warnings_flag |= value;
- }
- else
- *flags |= value;
- }
- }
- args = strtok (NULL, ",");
}
- }
+ else
+ *flags |= all;
}
/** Decode a set of sub arguments.