mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 09:13:04 +00:00
Finish implementing --warnings=error, which should not be implied by
--warnings=all (or by its synonyms -W and --warnings without subarguments). * src/complain.c (set_warning_issued): New function to report that warnings are being treated as errors and to record an error if so. Invoke... (warn_at, warn): ... here. * src/getargs.c (warnings_args, warnings_types): Reorder so that "error - warnings are errors" does not appear above "all - all of the above". (getargs): For -W and --warnings without subarguments, don't let FLAGS_ARGMATCH set warnings_error in warnings_flag. * src/getargs.h (enum warnings): Unset warnings_error in warnings_all.
This commit is contained in:
16
ChangeLog
16
ChangeLog
@@ -1,3 +1,19 @@
|
|||||||
|
2006-10-31 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
|
Finish implementing --warnings=error, which should not be implied by
|
||||||
|
--warnings=all (or by its synonyms -W and --warnings without
|
||||||
|
subarguments).
|
||||||
|
* src/complain.c (set_warning_issued): New function to report that
|
||||||
|
warnings are being treated as errors and to record an error if so.
|
||||||
|
Invoke...
|
||||||
|
(warn_at, warn): ... here.
|
||||||
|
* src/getargs.c (warnings_args, warnings_types): Reorder so that
|
||||||
|
"error - warnings are errors" does not appear above "all - all of the
|
||||||
|
above".
|
||||||
|
(getargs): For -W and --warnings without subarguments, don't let
|
||||||
|
FLAGS_ARGMATCH set warnings_error in warnings_flag.
|
||||||
|
* src/getargs.h (enum warnings): Unset warnings_error in warnings_all.
|
||||||
|
|
||||||
2006-10-31 Joel E. Denny <jdenny@ces.clemson.edu>
|
2006-10-31 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
* src/getargs.c (flags_argmatch): Don't cause segmentation fault for
|
* src/getargs.c (flags_argmatch): Don't cause segmentation fault for
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "complain.h"
|
#include "complain.h"
|
||||||
#include "files.h"
|
#include "files.h"
|
||||||
|
#include "getargs.h"
|
||||||
|
|
||||||
/* The calling program should define program_name and set it to the
|
/* The calling program should define program_name and set it to the
|
||||||
name of the executing program. */
|
name of the executing program. */
|
||||||
@@ -79,15 +80,29 @@ error_message (location *loc,
|
|||||||
| Report a warning, and proceed. |
|
| Report a warning, and proceed. |
|
||||||
`--------------------------------*/
|
`--------------------------------*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_warning_issued (void)
|
||||||
|
{
|
||||||
|
static bool warning_issued = false;
|
||||||
|
if (!warning_issued && (warnings_flag & warnings_error))
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s: warnings being treated as errors\n", program_name);
|
||||||
|
complaint_issued = true;
|
||||||
|
}
|
||||||
|
warning_issued = true;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
warn_at (location loc, const char *message, ...)
|
warn_at (location loc, const char *message, ...)
|
||||||
{
|
{
|
||||||
|
set_warning_issued ();
|
||||||
ERROR_MESSAGE (&loc, _("warning"), message);
|
ERROR_MESSAGE (&loc, _("warning"), message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
warn (const char *message, ...)
|
warn (const char *message, ...)
|
||||||
{
|
{
|
||||||
|
set_warning_issued ();
|
||||||
ERROR_MESSAGE (NULL, _("warning"), message);
|
ERROR_MESSAGE (NULL, _("warning"), message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -204,18 +204,18 @@ static const char * const warnings_args[] =
|
|||||||
/* In a series of synonyms, present the most meaningful first, so
|
/* In a series of synonyms, present the most meaningful first, so
|
||||||
that argmatch_valid be more readable. */
|
that argmatch_valid be more readable. */
|
||||||
"none - no warnings",
|
"none - no warnings",
|
||||||
"error - warnings are errors",
|
|
||||||
"yacc - incompatibilities with POSIX YACC",
|
"yacc - incompatibilities with POSIX YACC",
|
||||||
"all - all of the above",
|
"all - all of the above",
|
||||||
|
"error - warnings are errors",
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int warnings_types[] =
|
static const int warnings_types[] =
|
||||||
{
|
{
|
||||||
warnings_none,
|
warnings_none,
|
||||||
warnings_error,
|
|
||||||
warnings_yacc,
|
warnings_yacc,
|
||||||
warnings_all
|
warnings_all,
|
||||||
|
warnings_error
|
||||||
};
|
};
|
||||||
|
|
||||||
ARGMATCH_VERIFY (warnings_args, warnings_types);
|
ARGMATCH_VERIFY (warnings_args, warnings_types);
|
||||||
@@ -472,7 +472,10 @@ getargs (int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'W':
|
case 'W':
|
||||||
FLAGS_ARGMATCH (warnings, optarg);
|
if (optarg)
|
||||||
|
FLAGS_ARGMATCH (warnings, optarg);
|
||||||
|
else
|
||||||
|
warnings_flag |= warnings_all;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LOCATIONS_OPTION:
|
case LOCATIONS_OPTION:
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ enum warnings
|
|||||||
warnings_none = 0, /**< Issue no warnings. */
|
warnings_none = 0, /**< Issue no warnings. */
|
||||||
warnings_error = 1 << 0, /**< Warnings are treated as errors. */
|
warnings_error = 1 << 0, /**< Warnings are treated as errors. */
|
||||||
warnings_yacc = 1 << 1, /**< POSIXME. */
|
warnings_yacc = 1 << 1, /**< POSIXME. */
|
||||||
warnings_all = ~0 /**< All of the above. */
|
warnings_all = ~warnings_error /**< All above warnings. */
|
||||||
};
|
};
|
||||||
/** What warnings are issued. */
|
/** What warnings are issued. */
|
||||||
extern int warnings_flag;
|
extern int warnings_flag;
|
||||||
|
|||||||
Reference in New Issue
Block a user