diff options
| -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" } |
