pt.c (check_template_variable): Check for the return of pedwarn before emitting a...
authorFabien Chêne <fabien@gcc.gnu.org>
Wed, 9 Apr 2014 19:51:17 +0000 (21:51 +0200)
committerFabien Chêne <fabien@gcc.gnu.org>
Wed, 9 Apr 2014 19:51:17 +0000 (21:51 +0200)
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

gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/cp/pt.c

index 4a25ad9..3c09daa 100644 (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
index 7bea3d2..f386eed 100644 (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;
            }
 
index eaa4ba2..318c325 100644 (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");