toplev.h (inform_n, error_n): Declare.

gcc/
2010-03-01  Marco Poletti  <poletti.marco@gmail.com> 

        * toplev.h (inform_n, error_n): Declare.
        * diagnostic.c (inform_n, error_n): New function.

gcc/cp/
2010-03-01  Marco Poletti  <poletti.marco@gmail.com>

        * pt.c (redeclare_class_template): Use error_n and inform_n.

gcc/po
2010-03-01  Shujing Zhao  <pearly.zhao@oracle.com>

        * exgettext: Handle the functions that end with _n.

From-SVN: r157134
This commit is contained in:
Shujing Zhao 2010-03-01 09:56:41 +00:00
parent fef06326e1
commit 894e2652e1
7 changed files with 66 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2010-03-01 Marco Poletti <poletti.marco@gmail.com>
* toplev.h (inform_n, error_n): Declare.
* diagnostic.c (inform_n, error_n): New function.
2010-03-01 Jakub Jelinek <jakub@redhat.com>
* cfgexpand.c (expand_used_vars): If an artificial non-ignored var

View File

@ -1,3 +1,7 @@
2010-03-01 Marco Poletti <poletti.marco@gmail.com>
* pt.c (redeclare_class_template): Use error_n and inform_n.
2010-02-27 Mark Mitchell <mark@codesourcery.com>
PR c++/42748

View File

@ -4661,10 +4661,14 @@ redeclare_class_template (tree type, tree parms)
if (TREE_VEC_LENGTH (parms) != TREE_VEC_LENGTH (tmpl_parms))
{
error ("redeclared with %d template parameter(s)",
TREE_VEC_LENGTH (parms));
inform (input_location, "previous declaration %q+D used %d template parameter(s)",
tmpl, TREE_VEC_LENGTH (tmpl_parms));
error_n (input_location, TREE_VEC_LENGTH (parms),
"redeclared with %d template parameter",
"redeclared with %d template parameters",
TREE_VEC_LENGTH (parms));
inform_n (input_location, TREE_VEC_LENGTH (tmpl_parms),
"previous declaration %q+D used %d template parameter",
"previous declaration %q+D used %d template parameters",
tmpl, TREE_VEC_LENGTH (tmpl_parms));
return false;
}

View File

@ -520,6 +520,23 @@ inform (location_t location, const char *gmsgid, ...)
va_end (ap);
}
/* An informative note at LOCATION. Use this for additional details on an
error message. */
void
inform_n (location_t location, int n, const char *singular_gmsgid,
const char *plural_gmsgid, ...)
{
diagnostic_info diagnostic;
va_list ap;
va_start (ap, plural_gmsgid);
diagnostic_set_info_translated (&diagnostic,
ngettext (singular_gmsgid, plural_gmsgid, n),
&ap, location, DK_NOTE);
report_diagnostic (&diagnostic);
va_end (ap);
}
/* A warning at INPUT_LOCATION. Use this for code which is correct according
to the relevant language specification but is likely to be buggy anyway.
Returns true if the warning was printed, false if it was inhibited. */
@ -615,6 +632,23 @@ error (const char *gmsgid, ...)
va_end (ap);
}
/* A hard error: the code is definitely ill-formed, and an object file
will not be produced. */
void
error_n (location_t location, int n, const char *singular_gmsgid,
const char *plural_gmsgid, ...)
{
diagnostic_info diagnostic;
va_list ap;
va_start (ap, plural_gmsgid);
diagnostic_set_info_translated (&diagnostic,
ngettext (singular_gmsgid, plural_gmsgid, n),
&ap, location, DK_ERROR);
report_diagnostic (&diagnostic);
va_end (ap);
}
/* Same as ebove, but use location LOC instead of input_location. */
void
error_at (location_t loc, const char *gmsgid, ...)

View File

@ -1,3 +1,7 @@
2010-03-01 Shujing Zhao <pearly.zhao@oracle.com>
* exgettext: Handle the functions that end with _n.
2010-02-24 Joseph Myers <joseph@codesourcery.com>
* zh_CN.po: Update.

View File

@ -113,9 +113,15 @@ function keyword_option(line) {
format="c-format"
if (n == 1) { keyword = "--keyword=" name }
else { keyword = "--keyword=" name ":" n }
else {
keyword = "--keyword=" name ":" n
if (name ~ /_n$/)
keyword = keyword "," (n + 1)
}
if (format) {
keyword=keyword "\n--flag=" name ":" n ":" format
if (name ~ /_n$/)
keyword = keyword "\n--flag=" name ":" (n + 1) ":" format
}
if (! keyword_seen[name]) {

View File

@ -63,6 +63,8 @@ extern bool warning (int, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern bool warning_at (location_t, int, const char *, ...)
ATTRIBUTE_GCC_DIAG(3,4);
extern void error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
extern void error_n (location_t, int, const char *, const char *, ...)
ATTRIBUTE_GCC_DIAG(3,5) ATTRIBUTE_GCC_DIAG(4,5);
extern void error_at (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern void fatal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
ATTRIBUTE_NORETURN;
@ -72,6 +74,8 @@ extern bool pedwarn (location_t, int, const char *, ...)
extern bool permerror (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern void sorry (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
extern void inform (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern void inform_n (location_t, int, const char *, const char *, ...)
ATTRIBUTE_GCC_DIAG(3,5) ATTRIBUTE_GCC_DIAG(4,5);
extern void verbatim (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
extern void rest_of_decl_compilation (tree, int, int);