diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-08-17 08:06:27 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-08-17 08:06:27 +0000 |
commit | b646edb85c5be9813851a21cddf0e9472d4023c2 (patch) | |
tree | 7734c5347a8348add91c86f705cb32d36ddb135e /gcc | |
parent | a97728cfa9eb7aa797ddf6dd766900d1a87b2640 (diff) | |
download | gcc-b646edb85c5be9813851a21cddf0e9472d4023c2.zip gcc-b646edb85c5be9813851a21cddf0e9472d4023c2.tar.gz gcc-b646edb85c5be9813851a21cddf0e9472d4023c2.tar.bz2 |
re PR c++/28710 (ICE redeclaring template as non-template)
PR c++/28710
* decl.c (xref_tag): Improve error message. Return early on error.
* g++.dg/template/redecl4.C: New test.
From-SVN: r116211
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/decl.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/redecl4.C | 5 |
4 files changed, 13 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 650e393..94de8b7 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +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. + PR c++/28711 * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index b03ea62..a8ec398 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9695,7 +9695,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; + error ("previous declaration %q+D", t); + POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node); } /* Make injected friend class visible. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6805eb1..5824e85 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2006-08-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + PR c++/28710 + * g++.dg/template/redecl4.C: New test. + PR c++/28711 * g++.dg/template/ctor8.C: New test. diff --git a/gcc/testsuite/g++.dg/template/redecl4.C b/gcc/testsuite/g++.dg/template/redecl4.C new file mode 100644 index 0000000..9a4a9f3 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/redecl4.C @@ -0,0 +1,5 @@ +// PR c++/28710 +// { dg-do compile } + +template<int> union A; // { dg-error "previous" } +struct A; // { dg-error "non-template" } |