pt.c (check_template_variable): Check for the return of pedwarn before emitting a note.

2014-04-09  Fabien Chêne  <fabien@gcc.gnu.org>

	* pt.c (check_template_variable): Check for the return of pedwarn
	before emitting a note.
	* parser.c (cp_parser_lambda_introducer): Likewise.

From-SVN: r209252
This commit is contained in:
Fabien Chêne 2014-04-09 21:51:17 +02:00
parent dbe1eced08
commit 51970b3e33
3 changed files with 14 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2014-04-09 Fabien Chêne <fabien@gcc.gnu.org>
* pt.c (check_template_variable): Check for the return of pedwarn
before emitting a note.
* parser.c (cp_parser_lambda_introducer): Likewise.
2014-04-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59115

View File

@ -8961,10 +8961,10 @@ cp_parser_lambda_introducer (cp_parser* parser, tree lambda_expr)
if (VAR_P (capture_init_expr)
&& decl_storage_duration (capture_init_expr) != dk_auto)
{
pedwarn (capture_token->location, 0, "capture of variable "
"%qD with non-automatic storage duration",
capture_init_expr);
inform (0, "%q+#D declared here", capture_init_expr);
if (pedwarn (capture_token->location, 0, "capture of variable "
"%qD with non-automatic storage duration",
capture_init_expr))
inform (0, "%q+#D declared here", capture_init_expr);
continue;
}

View File

@ -2304,10 +2304,10 @@ check_template_variable (tree decl)
"%qD is not a static data member of a class template", decl);
else if (template_header_count > wanted)
{
pedwarn (DECL_SOURCE_LOCATION (decl), 0,
"too many template headers for %D (should be %d)",
decl, wanted);
if (CLASSTYPE_TEMPLATE_SPECIALIZATION (ctx))
bool warned = pedwarn (DECL_SOURCE_LOCATION (decl), 0,
"too many template headers for %D (should be %d)",
decl, wanted);
if (warned && CLASSTYPE_TEMPLATE_SPECIALIZATION (ctx))
inform (DECL_SOURCE_LOCATION (decl),
"members of an explicitly specialized class are defined "
"without a template header");