]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/28710 (ICE redeclaring template as non-template)
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>
Thu, 17 Aug 2006 08:55:17 +0000 (08:55 +0000)
committerVolker Reichelt <reichelt@gcc.gnu.org>
Thu, 17 Aug 2006 08:55:17 +0000 (08:55 +0000)
PR c++/28710
* decl.c (xref_tag): Improve error message.  Return early on error.

* g++.dg/template/redecl4.C: New test.

From-SVN: r116216

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/redecl4.C [new file with mode: 0644]

index 68c4707471d9efbc6c938b7c686b4e977333890b..1dcbc7736cf15e3bbf3538979fb2c40640126367 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/28710
+       * decl.c (xref_tag): Improve error message.  Return early on error.
+
 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/28593
index 63b491c684b57754c552c57c21897ea22115fe2a..cddfcb2f73892e6d6b3cc91b0eb98152ddddb1a6 100644 (file)
@@ -9281,7 +9281,8 @@ xref_tag (enum tag_types tag_code, tree name,
               && CLASSTYPE_IS_TEMPLATE (t))
        {
          error ("redeclaration of %qT as a non-template", t);
-         t = error_mark_node;
+         cp_error_at ("previous declaration %q+D", t);
+         POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
        }
 
       /* Make injected friend class visible.  */
index 04181f88d08c51ff65ee228b6ad8b798e10be6c8..291c55d68bfb126a3163daea0fec37945d16c4d2 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/28710
+       * g++.dg/template/redecl4.C: New test.
+
 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/28593
diff --git a/gcc/testsuite/g++.dg/template/redecl4.C b/gcc/testsuite/g++.dg/template/redecl4.C
new file mode 100644 (file)
index 0000000..9a4a9f3
--- /dev/null
@@ -0,0 +1,5 @@
+// PR c++/28710
+// { dg-do compile }
+
+template<int> union A;  // { dg-error "previous" }
+struct A;               // { dg-error "non-template" }