]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2013-06-12 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 12 Jun 2013 14:03:28 +0000 (14:03 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 12 Jun 2013 14:03:28 +0000 (14:03 +0000)
PR c++/42021
* parser.c (cp_parser_nested_name_specifier_opt): Avoid emitting
again diagnostic already emitted by cp_parser_lookup_name.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200013 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 144f1fc4edb205b65b51629d38a2edbe70f22de2..c8a9e127963b9b93439f8eba561e07f850b52431 100644 (file)
@@ -1,8 +1,14 @@
+2013-06-12  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/42021
+       * parser.c (cp_parser_nested_name_specifier_opt): Avoid emitting
+       again diagnostic already emitted by cp_parser_lookup_name.
+
 2013-06-11  Jan Hubicka  <jh@suse.cz>
 
        PR c++/57551
-       * cp/pt.c (mark_decl_instantiated): Do not export explicit instantiations
-       of anonymous namespace templates.
+       * cp/pt.c (mark_decl_instantiated): Do not export explicit
+       instantiations of anonymous namespace templates.
 
 2013-06-10  Jason Merrill  <jason@redhat.com>
 
index 319da218356e46bb9c30b71aff0ca7d5de248997..7b4c358d5335d9237f7b1b0ba1a3ea96e8a7a7e4 100644 (file)
@@ -5230,10 +5230,16 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
                                  decl);
                      else if (ambiguous_decls)
                        {
-                         error_at (token->location,
-                                   "reference to %qD is ambiguous",
-                                   token->u.value);
-                         print_candidates (ambiguous_decls);
+                         // cp_parser_lookup_name has the same diagnostic,
+                         // thus make sure to emit it almost once.
+                         if (cp_parser_uncommitted_to_tentative_parse_p
+                             (parser))
+                           {
+                             error_at (token->location,
+                                       "reference to %qD is ambiguous",
+                                       token->u.value);
+                             print_candidates (ambiguous_decls);
+                           }
                          decl = error_mark_node;
                        }
                      else