mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 01: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>
|
2006-07-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
* NEWS: Instead of %union, you can define and use your own union type
|
* 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.
|
/* 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
|
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
|
under the terms of the GNU General Public License as published by the
|
||||||
@@ -32,13 +33,48 @@
|
|||||||
name of the executing program. */
|
name of the executing program. */
|
||||||
extern char *program_name;
|
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;
|
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. |
|
| Report a warning, and proceed. |
|
||||||
`--------------------------------*/
|
`--------------------------------*/
|
||||||
@@ -46,35 +82,16 @@ bool complaint_issued;
|
|||||||
void
|
void
|
||||||
warn_at (location loc, const char *message, ...)
|
warn_at (location loc, const char *message, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
ERROR_MESSAGE (&loc, _("warning"), message);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
warn (const char *message, ...)
|
warn (const char *message, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
ERROR_MESSAGE (NULL, _("warning"), message);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------.
|
/*-----------------------------------------------------------.
|
||||||
| An error has occurred, but we can proceed, and die later. |
|
| An error has occurred, but we can proceed, and die later. |
|
||||||
`-----------------------------------------------------------*/
|
`-----------------------------------------------------------*/
|
||||||
@@ -82,34 +99,18 @@ warn (const char *message, ...)
|
|||||||
void
|
void
|
||||||
complain_at (location loc, const char *message, ...)
|
complain_at (location loc, const char *message, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
ERROR_MESSAGE (&loc, NULL, message);
|
||||||
|
|
||||||
location_print (stderr, loc);
|
|
||||||
fputs (": ", stderr);
|
|
||||||
|
|
||||||
va_start (args, message);
|
|
||||||
vfprintf (stderr, message, args);
|
|
||||||
va_end (args);
|
|
||||||
|
|
||||||
complaint_issued = true;
|
complaint_issued = true;
|
||||||
putc ('\n', stderr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
complain (const char *message, ...)
|
complain (const char *message, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
ERROR_MESSAGE (NULL, NULL, message);
|
||||||
|
|
||||||
fprintf (stderr, "%s: ", current_file ? current_file : program_name);
|
|
||||||
|
|
||||||
va_start (args, message);
|
|
||||||
vfprintf (stderr, message, args);
|
|
||||||
va_end (args);
|
|
||||||
|
|
||||||
complaint_issued = true;
|
complaint_issued = true;
|
||||||
putc ('\n', stderr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------.
|
/*-------------------------------------------------.
|
||||||
| A severe error has occurred, we cannot proceed. |
|
| A severe error has occurred, we cannot proceed. |
|
||||||
`-------------------------------------------------*/
|
`-------------------------------------------------*/
|
||||||
@@ -117,31 +118,13 @@ complain (const char *message, ...)
|
|||||||
void
|
void
|
||||||
fatal_at (location loc, const char *message, ...)
|
fatal_at (location loc, const char *message, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
ERROR_MESSAGE (&loc, _("fatal error"), message);
|
||||||
|
|
||||||
location_print (stderr, loc);
|
|
||||||
fputs (": ", stderr);
|
|
||||||
fputs (_("fatal error: "), stderr);
|
|
||||||
|
|
||||||
va_start (args, message);
|
|
||||||
vfprintf (stderr, message, args);
|
|
||||||
va_end (args);
|
|
||||||
putc ('\n', stderr);
|
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
fatal (const char *message, ...)
|
fatal (const char *message, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
ERROR_MESSAGE (NULL, _("fatal error"), message);
|
||||||
|
|
||||||
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);
|
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* Declaration for error-reporting function for Bison.
|
/* 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
|
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
|
under the terms of the GNU General Public License as published by the
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
/* Informative messages, but we proceed. */
|
/** Informative messages, but we proceed. */
|
||||||
|
|
||||||
void warn (char const *format, ...)
|
void warn (char const *format, ...)
|
||||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||||
@@ -33,7 +33,7 @@ void warn (char const *format, ...)
|
|||||||
void warn_at (location loc, char const *format, ...)
|
void warn_at (location loc, char const *format, ...)
|
||||||
__attribute__ ((__format__ (__printf__, 2, 3)));
|
__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, ...)
|
void complain (char const *format, ...)
|
||||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||||
@@ -41,7 +41,7 @@ void complain (char const *format, ...)
|
|||||||
void complain_at (location loc, char const *format, ...)
|
void complain_at (location loc, char const *format, ...)
|
||||||
__attribute__ ((__format__ (__printf__, 2, 3)));
|
__attribute__ ((__format__ (__printf__, 2, 3)));
|
||||||
|
|
||||||
/* Something bad happened, and let's die now. */
|
/** A fatal error, causing immediate exit. */
|
||||||
|
|
||||||
void fatal (char const *format, ...)
|
void fatal (char const *format, ...)
|
||||||
__attribute__ ((__noreturn__, __format__ (__printf__, 1, 2)));
|
__attribute__ ((__noreturn__, __format__ (__printf__, 1, 2)));
|
||||||
@@ -49,10 +49,7 @@ void fatal (char const *format, ...)
|
|||||||
void fatal_at (location loc, char const *format, ...)
|
void fatal_at (location loc, char const *format, ...)
|
||||||
__attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
|
__attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
|
||||||
|
|
||||||
/* This variable is set each time `warn' is called. */
|
/** Whether an error was reported. */
|
||||||
extern bool warning_issued;
|
|
||||||
|
|
||||||
/* This variable is set each time `complain' is called. */
|
|
||||||
extern bool complaint_issued;
|
extern bool complaint_issued;
|
||||||
|
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
|
|||||||
Reference in New Issue
Block a user