mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 08:30:35 +08:00
pretty-print.c: Include tree.h.
* pretty-print.c: Include tree.h. (pp_base_prepare_to_format): New function, logic from text_specifies_location. (pp_base_format_text): Use gcc_assert. * pretty-print.h (pp_prepare_to_format): New macro. (pp_base_prepare_to_format): Prototype. * diagnostic.c (text_specifies_location): Delete. (bug_report_request): Delete. (diagnostic_set_info): Don't call text_specifies_location. (diagnostic_action_after_output): Put text from bug_report_request inline here. Use gcc_unreachable. (diagnostic_report_current_function): Fix comment. (diagnostic_report_diagnostic): Clarify logic for error recursion. Call pp_prepare_to_format before diagnostic_starter. (trim_filename): Use IS_DIR_SEPARATOR. (fatal_error, internal_error): Use gcc_unreachable. (error_recursion): Call diagnostic_action_after_output to issue the bug_report_request message and exit. * Makefile.in (diagnostic.o, pretty-print.o): Update dependencies. * c-parse.in: Add list of diagnostic messages to insulate translation template from version of yacc/bison used to compile the grammar. java: * parse.y, parse-scan.y: Add list of diagnostic messages to insulate translation template from version of yacc/bison used to compile the grammar. treelang: * parse.y: Add list of diagnostic messages to insulate translation template from version of yacc/bison used to compile the grammar. po: * gcc.pot: Regenerate. From-SVN: r88590
This commit is contained in:
parent
12cde21b12
commit
d5706a1eea
@ -1,3 +1,29 @@
|
||||
2004-10-05 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* pretty-print.c: Include tree.h.
|
||||
(pp_base_prepare_to_format): New function, logic from
|
||||
text_specifies_location.
|
||||
(pp_base_format_text): Use gcc_assert.
|
||||
* pretty-print.h (pp_prepare_to_format): New macro.
|
||||
(pp_base_prepare_to_format): Prototype.
|
||||
* diagnostic.c (text_specifies_location): Delete.
|
||||
(bug_report_request): Delete.
|
||||
(diagnostic_set_info): Don't call text_specifies_location.
|
||||
(diagnostic_action_after_output): Put text from
|
||||
bug_report_request inline here. Use gcc_unreachable.
|
||||
(diagnostic_report_current_function): Fix comment.
|
||||
(diagnostic_report_diagnostic): Clarify logic for error recursion.
|
||||
Call pp_prepare_to_format before diagnostic_starter.
|
||||
(trim_filename): Use IS_DIR_SEPARATOR.
|
||||
(fatal_error, internal_error): Use gcc_unreachable.
|
||||
(error_recursion): Call diagnostic_action_after_output to
|
||||
issue the bug_report_request message and exit.
|
||||
* Makefile.in (diagnostic.o, pretty-print.o): Update dependencies.
|
||||
|
||||
* c-parse.in: Add list of diagnostic messages to insulate
|
||||
translation template from version of yacc/bison used to
|
||||
compile the grammar.
|
||||
|
||||
2004-10-06 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR 16406
|
||||
|
@ -1787,9 +1787,9 @@ tree-pretty-print.o : tree-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
|
||||
fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(TREE_H) $(FLAGS_H) real.h toplev.h $(HASHTAB_H) $(EXPR_H) $(RTL_H) $(GGC_H) \
|
||||
$(TM_P_H) langhooks.h $(MD5_H)
|
||||
diagnostic.o : diagnostic.c $(DIAGNOSTIC_H) real.h \
|
||||
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) version.h $(TM_P_H) $(FLAGS_H) $(GGC_H) \
|
||||
input.h toplev.h intl.h langhooks.h $(LANGHOOKS_DEF_H)
|
||||
diagnostic.o : diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(TREE_H) version.h $(TM_P_H) $(FLAGS_H) input.h toplev.h intl.h \
|
||||
$(DIAGNOSTIC_H) langhooks.h $(LANGHOOKS_DEF_H)
|
||||
opts.o : opts.c opts.h options.h toplev.h $(CONFIG_H) $(SYSTEM_H) \
|
||||
coretypes.h $(TREE_H) $(TM_H) langhooks.h $(GGC_H) $(RTL_H) \
|
||||
output.h $(DIAGNOSTIC_H) $(TM_P_H) $(INSN_ATTR_H) intl.h target.h
|
||||
@ -2173,7 +2173,8 @@ lambda-code.o: lambda-code.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \
|
||||
$(TREE_DATA_REF_H) $(SCEV_H)
|
||||
params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(PARAMS_H) toplev.h
|
||||
hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(HOOKS_H)
|
||||
pretty-print.o: $(CONFIG_H) $(SYSTEM_H) pretty-print.c $(PRETTY_PRINT_H)
|
||||
pretty-print.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h intl.h $(PRETTY_PRINT_H) \
|
||||
$(TREE_H)
|
||||
errors.o : errors.c $(CONFIG_H) $(SYSTEM_H) errors.h
|
||||
|
||||
$(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) $(GGC_H) \
|
||||
@ -2605,7 +2606,7 @@ build/gengtype$(build_exeext) : build/gengtype.o build/gengtype-lex.o \
|
||||
$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \
|
||||
build/gengtype.o build/gengtype-lex.o build/gengtype-yacc.o \
|
||||
$(BUILD_ERRORS) $(BUILD_LIBS)
|
||||
|
||||
|
||||
build/gengtype.o : gengtype.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) \
|
||||
gengtype.h gtyp-gen.h rtl.def insn-notes.def errors.h
|
||||
|
||||
|
@ -52,7 +52,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
#include "ggc.h"
|
||||
#include "c-common.h"
|
||||
|
||||
/* Like YYERROR but do call yyerror. */
|
||||
#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
|
||||
|
||||
/* Like the default stack expander, except (1) use realloc when possible,
|
||||
@ -3556,4 +3555,21 @@ c_parse_file (void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __XGETTEXT__
|
||||
/* Depending on the version of Bison used to compile this grammar,
|
||||
it may issue generic diagnostics spelled "syntax error" or
|
||||
"parse error". To prevent this from changing the translation
|
||||
template randomly, we list all the variants of this particular
|
||||
diagnostic here. Translators: there is no fine distinction
|
||||
between diagnostics with "syntax error" in them, and diagnostics
|
||||
with "parse error" in them. It's okay to give them both the same
|
||||
translation. */
|
||||
const char d1[] = N_("syntax error");
|
||||
const char d2[] = N_("parse error");
|
||||
const char d3[] = N_("syntax error; also virtual memory exhausted");
|
||||
const char d4[] = N_("parse error; also virtual memory exhausted");
|
||||
const char d5[] = N_("syntax error: cannot back up");
|
||||
const char d6[] = N_("parse error: cannot back up");
|
||||
#endif
|
||||
|
||||
#include "gt-c-parse.h"
|
||||
|
107
gcc/diagnostic.c
107
gcc/diagnostic.c
@ -51,7 +51,6 @@ static void default_diagnostic_finalizer (diagnostic_context *,
|
||||
diagnostic_info *);
|
||||
|
||||
static void error_recursion (diagnostic_context *) ATTRIBUTE_NORETURN;
|
||||
static bool text_specifies_location (text_info *, location_t *);
|
||||
static bool diagnostic_count_diagnostic (diagnostic_context *,
|
||||
diagnostic_info *);
|
||||
static void diagnostic_action_after_output (diagnostic_context *,
|
||||
@ -61,13 +60,6 @@ static void real_abort (void) ATTRIBUTE_NORETURN;
|
||||
/* A diagnostic_context surrogate for stderr. */
|
||||
static diagnostic_context global_diagnostic_context;
|
||||
diagnostic_context *global_dc = &global_diagnostic_context;
|
||||
|
||||
/* Boilerplate text used in two locations. */
|
||||
#define bug_report_request \
|
||||
"Please submit a full bug report,\n\
|
||||
with preprocessed source if appropriate.\n\
|
||||
See %s for instructions.\n"
|
||||
|
||||
|
||||
/* Return a malloc'd string containing MSG formatted a la printf. The
|
||||
caller is responsible for freeing the memory. */
|
||||
@ -118,35 +110,6 @@ diagnostic_initialize (diagnostic_context *context)
|
||||
context->lock = 0;
|
||||
}
|
||||
|
||||
/* Returns true if the next format specifier in TEXT is a format specifier
|
||||
for a location_t. If so, update the object pointed by LOCUS to reflect
|
||||
the specified location in *TEXT->args_ptr. */
|
||||
static bool
|
||||
text_specifies_location (text_info *text, location_t *locus)
|
||||
{
|
||||
const char *p;
|
||||
/* Skip any leading text. */
|
||||
for (p = text->format_spec; *p && *p != '%'; ++p)
|
||||
;
|
||||
|
||||
/* Extract the location information if any. */
|
||||
if (p[0] == '%' && p[1] == 'H')
|
||||
{
|
||||
*locus = *va_arg (*text->args_ptr, location_t *);
|
||||
text->format_spec = p + 2;
|
||||
return true;
|
||||
}
|
||||
else if (p[0] == '%' && p[1] == 'J')
|
||||
{
|
||||
tree t = va_arg (*text->args_ptr, tree);
|
||||
*locus = DECL_SOURCE_LOCATION (t);
|
||||
text->format_spec = p + 2;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
diagnostic_set_info (diagnostic_info *diagnostic, const char *msgid,
|
||||
va_list *args, location_t location,
|
||||
@ -155,10 +118,7 @@ diagnostic_set_info (diagnostic_info *diagnostic, const char *msgid,
|
||||
diagnostic->message.err_no = errno;
|
||||
diagnostic->message.args_ptr = args;
|
||||
diagnostic->message.format_spec = _(msgid);
|
||||
/* If the diagnostic message doesn't specify a location,
|
||||
use LOCATION. */
|
||||
if (!text_specifies_location (&diagnostic->message, &diagnostic->location))
|
||||
diagnostic->location = location;
|
||||
diagnostic->location = location;
|
||||
diagnostic->kind = kind;
|
||||
}
|
||||
|
||||
@ -274,7 +234,9 @@ diagnostic_action_after_output (diagnostic_context *context,
|
||||
if (context->abort_on_error)
|
||||
real_abort ();
|
||||
|
||||
fnotice (stderr, bug_report_request, bug_report_url);
|
||||
fnotice (stderr, "Please submit a full bug report,\n"
|
||||
"with preprocessed source if appropriate.\n"
|
||||
"See %s for instructions.\n", bug_report_url);
|
||||
exit (FATAL_EXIT_CODE);
|
||||
|
||||
case DK_FATAL:
|
||||
@ -285,14 +247,12 @@ diagnostic_action_after_output (diagnostic_context *context,
|
||||
exit (FATAL_EXIT_CODE);
|
||||
|
||||
default:
|
||||
real_abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
/* Prints out, if necessary, the name of the current function
|
||||
that caused an error. Called from all error and warning functions.
|
||||
We ignore the FILE parameter, as it cannot be relied upon. */
|
||||
|
||||
that caused an error. Called from all error and warning functions. */
|
||||
void
|
||||
diagnostic_report_current_function (diagnostic_context *context)
|
||||
{
|
||||
@ -355,11 +315,23 @@ void
|
||||
diagnostic_report_diagnostic (diagnostic_context *context,
|
||||
diagnostic_info *diagnostic)
|
||||
{
|
||||
if (context->lock++ && diagnostic->kind < DK_SORRY)
|
||||
error_recursion (context);
|
||||
if (context->lock > 0)
|
||||
{
|
||||
/* If we're reporting an ICE in the middle of some other error,
|
||||
try to flush out the previous error, then let this one
|
||||
through. Don't do this more than once. */
|
||||
if (diagnostic->kind == DK_ICE && context->lock == 1)
|
||||
pp_flush (context->printer);
|
||||
else
|
||||
error_recursion (context);
|
||||
}
|
||||
|
||||
context->lock++;
|
||||
|
||||
if (diagnostic_count_diagnostic (context, diagnostic))
|
||||
{
|
||||
pp_prepare_to_format (context->printer, &diagnostic->message,
|
||||
&diagnostic->location);
|
||||
(*diagnostic_starter (context)) (context, diagnostic);
|
||||
pp_format_text (context->printer, &diagnostic->message);
|
||||
(*diagnostic_finalizer (context)) (context, diagnostic);
|
||||
@ -383,20 +355,10 @@ trim_filename (const char *name)
|
||||
|
||||
/* First skip any "../" in each filename. This allows us to give a proper
|
||||
reference to a file in a subdirectory. */
|
||||
while (p[0] == '.' && p[1] == '.'
|
||||
&& (p[2] == DIR_SEPARATOR
|
||||
#ifdef DIR_SEPARATOR_2
|
||||
|| p[2] == DIR_SEPARATOR_2
|
||||
#endif
|
||||
))
|
||||
while (p[0] == '.' && p[1] == '.' && IS_DIR_SEPARATOR (p[2]))
|
||||
p += 3;
|
||||
|
||||
while (q[0] == '.' && q[1] == '.'
|
||||
&& (q[2] == DIR_SEPARATOR
|
||||
#ifdef DIR_SEPARATOR_2
|
||||
|| p[2] == DIR_SEPARATOR_2
|
||||
#endif
|
||||
))
|
||||
while (q[0] == '.' && q[1] == '.' && IS_DIR_SEPARATOR (q[2]))
|
||||
q += 3;
|
||||
|
||||
/* Now skip any parts the two filenames have in common. */
|
||||
@ -404,11 +366,7 @@ trim_filename (const char *name)
|
||||
p++, q++;
|
||||
|
||||
/* Now go backwards until the previous directory separator. */
|
||||
while (p > name && p[-1] != DIR_SEPARATOR
|
||||
#ifdef DIR_SEPARATOR_2
|
||||
&& p[-1] != DIR_SEPARATOR_2
|
||||
#endif
|
||||
)
|
||||
while (p > name && IS_DIR_SEPARATOR (p[-1]))
|
||||
p--;
|
||||
|
||||
return p;
|
||||
@ -526,8 +484,7 @@ fatal_error (const char *msgid, ...)
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
|
||||
/* NOTREACHED */
|
||||
real_abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
/* An internal consistency check has failed. We make no attempt to
|
||||
@ -545,8 +502,7 @@ internal_error (const char *msgid, ...)
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
|
||||
/* NOTREACHED */
|
||||
real_abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
/* Special case error functions. Most are implemented in terms of the
|
||||
@ -572,13 +528,22 @@ fnotice (FILE *file, const char *msgid, ...)
|
||||
static void
|
||||
error_recursion (diagnostic_context *context)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
|
||||
if (context->lock < 3)
|
||||
pp_flush (context->printer);
|
||||
|
||||
fnotice (stderr,
|
||||
"Internal compiler error: Error reporting routines re-entered.\n");
|
||||
fnotice (stderr, bug_report_request, bug_report_url);
|
||||
exit (FATAL_EXIT_CODE);
|
||||
|
||||
/* Call diagnostic_action_after_output to get the "please submit a bug
|
||||
report" message. It only looks at the kind field of diagnostic_info. */
|
||||
diagnostic.kind = DK_ICE;
|
||||
diagnostic_action_after_output (context, &diagnostic);
|
||||
|
||||
/* Do not use gcc_unreachable here; that goes through internal_error
|
||||
and therefore would cause infinite recursion. */
|
||||
real_abort ();
|
||||
}
|
||||
|
||||
/* Report an internal compiler error in a friendly manner. This is
|
||||
|
@ -1,3 +1,9 @@
|
||||
2004-10-05 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* parse.y, parse-scan.y: Add list of diagnostic messages to
|
||||
insulate translation template from version of yacc/bison used
|
||||
to compile the grammar.
|
||||
|
||||
2004-10-05 Ranjit Mathew <rmathew@hotmail.com>
|
||||
|
||||
Prepare for %q, %< and %> in diagnostic message strings.
|
||||
@ -230,7 +236,7 @@
|
||||
Fix bootstrap.
|
||||
* gjavah.c (free_method_name_list): Fix function definition so
|
||||
it's a proper C prototype.
|
||||
|
||||
|
||||
2004-09-21 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR java/17575:
|
||||
|
@ -1360,3 +1360,20 @@ yyerror (const char *msg ATTRIBUTE_UNUSED)
|
||||
fprintf (stderr, "%s: %d: %s\n", input_filename, input_line, msg);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
#ifdef __XGETTEXT__
|
||||
/* Depending on the version of Bison used to compile this grammar,
|
||||
it may issue generic diagnostics spelled "syntax error" or
|
||||
"parse error". To prevent this from changing the translation
|
||||
template randomly, we list all the variants of this particular
|
||||
diagnostic here. Translators: there is no fine distinction
|
||||
between diagnostics with "syntax error" in them, and diagnostics
|
||||
with "parse error" in them. It's okay to give them both the same
|
||||
translation. */
|
||||
const char d1[] = N_("syntax error");
|
||||
const char d2[] = N_("parse error");
|
||||
const char d3[] = N_("syntax error; also virtual memory exhausted");
|
||||
const char d4[] = N_("parse error; also virtual memory exhausted");
|
||||
const char d5[] = N_("syntax error: cannot back up");
|
||||
const char d6[] = N_("parse error: cannot back up");
|
||||
#endif
|
||||
|
@ -16409,5 +16409,22 @@ emit_test_initialization (void **entry_p, void *info)
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef __XGETTEXT__
|
||||
/* Depending on the version of Bison used to compile this grammar,
|
||||
it may issue generic diagnostics spelled "syntax error" or
|
||||
"parse error". To prevent this from changing the translation
|
||||
template randomly, we list all the variants of this particular
|
||||
diagnostic here. Translators: there is no fine distinction
|
||||
between diagnostics with "syntax error" in them, and diagnostics
|
||||
with "parse error" in them. It's okay to give them both the same
|
||||
translation. */
|
||||
const char d1[] = N_("syntax error");
|
||||
const char d2[] = N_("parse error");
|
||||
const char d3[] = N_("syntax error; also virtual memory exhausted");
|
||||
const char d4[] = N_("parse error; also virtual memory exhausted");
|
||||
const char d5[] = N_("syntax error: cannot back up");
|
||||
const char d6[] = N_("parse error: cannot back up");
|
||||
#endif
|
||||
|
||||
#include "gt-java-parse.h"
|
||||
#include "gtype-java.h"
|
||||
|
@ -1,3 +1,7 @@
|
||||
2004-10-05 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* gcc.pot: Regenerate.
|
||||
|
||||
2004-10-03 Joseph S. Myers <jsm@polyomino.org.uk>
|
||||
|
||||
* da.po: Update.
|
||||
|
6181
gcc/po/gcc.pot
6181
gcc/po/gcc.pot
File diff suppressed because it is too large
Load Diff
@ -26,6 +26,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
#include "coretypes.h"
|
||||
#include "intl.h"
|
||||
#include "pretty-print.h"
|
||||
#include "tree.h"
|
||||
|
||||
#define obstack_chunk_alloc xmalloc
|
||||
#define obstack_chunk_free free
|
||||
@ -165,6 +166,40 @@ pp_base_indent (pretty_printer *pp)
|
||||
pp_space (pp);
|
||||
}
|
||||
|
||||
/* Prepare PP to format a message pointed to by TEXT, with tentative
|
||||
location LOCUS. It is expected that a call to pp_format_text with
|
||||
exactly the same PP and TEXT arguments will follow. This routine
|
||||
may modify the data in memory at TEXT and LOCP, and if it does,
|
||||
caller is expected to notice.
|
||||
|
||||
Currently, all this does is notice a %H or %J escape at the beginning
|
||||
of the string, and update LOCUS to match. */
|
||||
void
|
||||
pp_base_prepare_to_format (pretty_printer *pp ATTRIBUTE_UNUSED,
|
||||
text_info *text,
|
||||
location_t *locus)
|
||||
{
|
||||
const char *p = text->format_spec;
|
||||
tree t;
|
||||
|
||||
/* Extract the location information if any. */
|
||||
if (p[0] == '%')
|
||||
switch (p[1])
|
||||
{
|
||||
case 'H':
|
||||
*locus = *va_arg (*text->args_ptr, location_t *);
|
||||
text->format_spec = p + 2;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
t = va_arg (*text->args_ptr, tree);
|
||||
*locus = DECL_SOURCE_LOCATION (t);
|
||||
text->format_spec = p + 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Format a message pointed to by TEXT. The following format specifiers are
|
||||
recognized as being client independent:
|
||||
%d, %i: (signed) integer in base ten.
|
||||
@ -231,8 +266,7 @@ pp_base_format_text (pretty_printer *pp, text_info *text)
|
||||
break;
|
||||
}
|
||||
/* We don't support precision beyond that of "long long". */
|
||||
if (precision > 2)
|
||||
abort();
|
||||
gcc_assert (precision <= 2);
|
||||
|
||||
if (quoted)
|
||||
pp_string (pp, open_quote);
|
||||
@ -319,10 +353,11 @@ pp_base_format_text (pretty_printer *pp, text_info *text)
|
||||
int n;
|
||||
const char *s;
|
||||
/* We handle no precision specifier but '%.*s'. */
|
||||
if (*++text->format_spec != '*')
|
||||
abort ();
|
||||
else if (*++text->format_spec != 's')
|
||||
abort ();
|
||||
++text->format_spec;
|
||||
gcc_assert (*text->format_spec == '*');
|
||||
++text->format_spec;
|
||||
gcc_assert (*text->format_spec == 's');
|
||||
|
||||
n = va_arg (*text->args_ptr, int);
|
||||
s = va_arg (*text->args_ptr, const char *);
|
||||
pp_append_text (pp, s, s + n);
|
||||
|
@ -158,6 +158,8 @@ struct pretty_print_info
|
||||
#define pp_append_text(PP, B, E) \
|
||||
pp_base_append_text (pp_base (PP), B, E)
|
||||
#define pp_flush(PP) pp_base_flush (pp_base (PP))
|
||||
#define pp_prepare_to_format(PP, TI, LOC) \
|
||||
pp_base_prepare_to_format (pp_base (PP), TI, LOC)
|
||||
#define pp_format_text(PP, TI) pp_base_format_text (pp_base (PP), TI)
|
||||
#define pp_format_verbatim(PP, TI) \
|
||||
pp_base_format_verbatim (pp_base (PP), TI)
|
||||
@ -261,6 +263,8 @@ extern void pp_printf (pretty_printer *, const char *, ...)
|
||||
|
||||
extern void pp_verbatim (pretty_printer *, const char *, ...);
|
||||
extern void pp_base_flush (pretty_printer *);
|
||||
extern void pp_base_prepare_to_format (pretty_printer *, text_info *,
|
||||
location_t *);
|
||||
extern void pp_base_format_text (pretty_printer *, text_info *);
|
||||
extern void pp_base_format_verbatim (pretty_printer *, text_info *);
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
2004-10-05 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* parse.y: Add list of diagnostic messages to insulate
|
||||
translation template from version of yacc/bison used to
|
||||
compile the grammar.
|
||||
|
||||
2004-10-02 James A. Morrison <phython@gcc.gnu.org>
|
||||
|
||||
PR other/17762
|
||||
|
@ -954,3 +954,19 @@ treelang_debug (void)
|
||||
yydebug = 1;
|
||||
}
|
||||
|
||||
#ifdef __XGETTEXT__
|
||||
/* Depending on the version of Bison used to compile this grammar,
|
||||
it may issue generic diagnostics spelled "syntax error" or
|
||||
"parse error". To prevent this from changing the translation
|
||||
template randomly, we list all the variants of this particular
|
||||
diagnostic here. Translators: there is no fine distinction
|
||||
between diagnostics with "syntax error" in them, and diagnostics
|
||||
with "parse error" in them. It's okay to give them both the same
|
||||
translation. */
|
||||
const char d1[] = N_("syntax error");
|
||||
const char d2[] = N_("parse error");
|
||||
const char d3[] = N_("syntax error; also virtual memory exhausted");
|
||||
const char d4[] = N_("parse error; also virtual memory exhausted");
|
||||
const char d5[] = N_("syntax error: cannot back up");
|
||||
const char d6[] = N_("parse error: cannot back up");
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user