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:
parent
fef06326e1
commit
894e2652e1
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
12
gcc/cp/pt.c
12
gcc/cp/pt.c
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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, ...)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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]) {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue