mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
* src/complain.c (error_message, ERROR_MESSAGE): New.
To factor... (fatal_at, fatal, warn_at, warn, complain_at, complain): these. * src/complain.h, src/complain.c (warning_issued): Remove, unused.
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
2006-07-10 Akim Demaille <akim@lrde.epita.fr>
|
||||
|
||||
* src/complain.c (error_message, ERROR_MESSAGE): New.
|
||||
To factor...
|
||||
(fatal_at, fatal, warn_at, warn, complain_at, complain): these.
|
||||
* src/complain.h, src/complain.c (warning_issued): Remove, unused.
|
||||
|
||||
2006-07-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* NEWS: Instead of %union, you can define and use your own union type
|
||||
|
||||
119
src/complain.c
119
src/complain.c
@@ -1,6 +1,7 @@
|
||||
/* Declaration for error-reporting function for Bison.
|
||||
|
||||
Copyright (C) 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
@@ -32,13 +33,48 @@
|
||||
name of the executing program. */
|
||||
extern char *program_name;
|
||||
|
||||
/* This variable is set each time `warn' is called. */
|
||||
bool warning_issued;
|
||||
|
||||
/* This variable is set each time `complain' is called. */
|
||||
bool complaint_issued;
|
||||
|
||||
|
||||
|
||||
/** Report an error message.
|
||||
*
|
||||
* \param loc the location, defaulting to the current file,
|
||||
* or the program name.
|
||||
* \param prefix put before the message (e.g., "warning").
|
||||
* \param message the error message, a printf format string.
|
||||
* \param args the arguments of the format string.
|
||||
*/
|
||||
static
|
||||
void
|
||||
error_message (location *loc,
|
||||
const char *prefix,
|
||||
const char *message, va_list args)
|
||||
{
|
||||
if (loc)
|
||||
location_print (stderr, *loc);
|
||||
else
|
||||
fputs (current_file ? current_file : program_name, stderr);
|
||||
fputs (": ", stderr);
|
||||
|
||||
if (prefix)
|
||||
fprintf (stderr, "%s: ", prefix);
|
||||
|
||||
vfprintf (stderr, message, args);
|
||||
va_end (args);
|
||||
putc ('\n', stderr);
|
||||
fflush (stderr);
|
||||
}
|
||||
|
||||
/** Wrap error_message() with varargs handling. */
|
||||
#define ERROR_MESSAGE(Loc, Prefix, Message) \
|
||||
{ \
|
||||
va_list args; \
|
||||
va_start (args, Message); \
|
||||
error_message (Loc, Prefix, Message, args); \
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------.
|
||||
| Report a warning, and proceed. |
|
||||
`--------------------------------*/
|
||||
@@ -46,35 +82,16 @@ bool complaint_issued;
|
||||
void
|
||||
warn_at (location loc, const char *message, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
location_print (stderr, loc);
|
||||
fputs (": ", stderr);
|
||||
fputs (_("warning: "), stderr);
|
||||
|
||||
va_start (args, message);
|
||||
vfprintf (stderr, message, args);
|
||||
va_end (args);
|
||||
|
||||
warning_issued = true;
|
||||
putc ('\n', stderr);
|
||||
ERROR_MESSAGE (&loc, _("warning"), message);
|
||||
}
|
||||
|
||||
void
|
||||
warn (const char *message, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
fprintf (stderr, "%s: %s", current_file ? current_file : program_name, _("warning: "));
|
||||
|
||||
va_start (args, message);
|
||||
vfprintf (stderr, message, args);
|
||||
va_end (args);
|
||||
|
||||
warning_issued = true;
|
||||
putc ('\n', stderr);
|
||||
ERROR_MESSAGE (NULL, _("warning"), message);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------.
|
||||
| An error has occurred, but we can proceed, and die later. |
|
||||
`-----------------------------------------------------------*/
|
||||
@@ -82,34 +99,18 @@ warn (const char *message, ...)
|
||||
void
|
||||
complain_at (location loc, const char *message, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
location_print (stderr, loc);
|
||||
fputs (": ", stderr);
|
||||
|
||||
va_start (args, message);
|
||||
vfprintf (stderr, message, args);
|
||||
va_end (args);
|
||||
|
||||
ERROR_MESSAGE (&loc, NULL, message);
|
||||
complaint_issued = true;
|
||||
putc ('\n', stderr);
|
||||
}
|
||||
|
||||
void
|
||||
complain (const char *message, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
fprintf (stderr, "%s: ", current_file ? current_file : program_name);
|
||||
|
||||
va_start (args, message);
|
||||
vfprintf (stderr, message, args);
|
||||
va_end (args);
|
||||
|
||||
ERROR_MESSAGE (NULL, NULL, message);
|
||||
complaint_issued = true;
|
||||
putc ('\n', stderr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------.
|
||||
| A severe error has occurred, we cannot proceed. |
|
||||
`-------------------------------------------------*/
|
||||
@@ -117,31 +118,13 @@ complain (const char *message, ...)
|
||||
void
|
||||
fatal_at (location loc, const char *message, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
location_print (stderr, loc);
|
||||
fputs (": ", stderr);
|
||||
fputs (_("fatal error: "), stderr);
|
||||
|
||||
va_start (args, message);
|
||||
vfprintf (stderr, message, args);
|
||||
va_end (args);
|
||||
putc ('\n', stderr);
|
||||
ERROR_MESSAGE (&loc, _("fatal error"), message);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
void
|
||||
fatal (const char *message, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
fprintf (stderr, "%s: ", current_file ? current_file : program_name);
|
||||
|
||||
fputs (_("fatal error: "), stderr);
|
||||
|
||||
va_start (args, message);
|
||||
vfprintf (stderr, message, args);
|
||||
va_end (args);
|
||||
putc ('\n', stderr);
|
||||
ERROR_MESSAGE (NULL, _("fatal error"), message);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Declaration for error-reporting function for Bison.
|
||||
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001, 2002, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
@@ -25,7 +25,7 @@
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
/* Informative messages, but we proceed. */
|
||||
/** Informative messages, but we proceed. */
|
||||
|
||||
void warn (char const *format, ...)
|
||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||
@@ -33,7 +33,7 @@ void warn (char const *format, ...)
|
||||
void warn_at (location loc, char const *format, ...)
|
||||
__attribute__ ((__format__ (__printf__, 2, 3)));
|
||||
|
||||
/* Something bad happened, but let's continue and die later. */
|
||||
/** An error, but we continue and die later. */
|
||||
|
||||
void complain (char const *format, ...)
|
||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||
@@ -41,7 +41,7 @@ void complain (char const *format, ...)
|
||||
void complain_at (location loc, char const *format, ...)
|
||||
__attribute__ ((__format__ (__printf__, 2, 3)));
|
||||
|
||||
/* Something bad happened, and let's die now. */
|
||||
/** A fatal error, causing immediate exit. */
|
||||
|
||||
void fatal (char const *format, ...)
|
||||
__attribute__ ((__noreturn__, __format__ (__printf__, 1, 2)));
|
||||
@@ -49,10 +49,7 @@ void fatal (char const *format, ...)
|
||||
void fatal_at (location loc, char const *format, ...)
|
||||
__attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
|
||||
|
||||
/* This variable is set each time `warn' is called. */
|
||||
extern bool warning_issued;
|
||||
|
||||
/* This variable is set each time `complain' is called. */
|
||||
/** Whether an error was reported. */
|
||||
extern bool complaint_issued;
|
||||
|
||||
# ifdef __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user