diff options
author | Mark Mitchell <mark@codesourcery.com> | 2004-05-23 21:06:56 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2004-05-23 21:06:56 +0000 |
commit | 9ce1594a3e521c3b0f6bd8b8eba1cc3a14e5ced7 (patch) | |
tree | 12483800056c2eb68f15aaf63464308c42054407 | |
parent | f746161e4ffa1427f1b2c7b08fafaad3046a9222 (diff) | |
download | gcc-9ce1594a3e521c3b0f6bd8b8eba1cc3a14e5ced7.zip gcc-9ce1594a3e521c3b0f6bd8b8eba1cc3a14e5ced7.tar.gz gcc-9ce1594a3e521c3b0f6bd8b8eba1cc3a14e5ced7.tar.bz2 |
re PR c++/15025 (accepts redeclaration of template as non-template)
PR c++/15025
* decl.c (xref_tag): Issue errors about redeclaring template
classes as non-template classes.
PR c++/15025
* g++.dg/template/redecl1.C: New test.
From-SVN: r82172
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/redecl1.C | 4 |
4 files changed, 22 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e6a6524..7fd46ac 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,11 @@ 2004-05-23 Mark Mitchell <mark@codesourcery.com> + PR c++/15025 + * decl.c (xref_tag): Issue errors about redeclaring template + classes as non-template classes. + +2004-05-23 Mark Mitchell <mark@codesourcery.com> + PR c++/14821 * name-lookup.c (supplement_binding): Allow redefinitions of namespace aliases. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 65e8800..b666dd7 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9407,6 +9407,13 @@ xref_tag (enum tag_types tag_code, tree name, { if (!globalize && processing_template_decl && IS_AGGR_TYPE (t)) redeclare_class_template (t, current_template_parms); + else if (!processing_template_decl + && CLASS_TYPE_P (t) + && CLASSTYPE_IS_TEMPLATE (t)) + { + error ("redeclaration of `%T' as a non-template", t); + t = error_mark_node; + } } POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d93b5c9..32d2f17 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2004-05-23 Mark Mitchell <mark@codesourcery.com> + PR c++/15025 + * g++.dg/template/redecl1.C: New test. + +2004-05-23 Mark Mitchell <mark@codesourcery.com> + PR c++/14821 * g++.dg/other/ns1.C: New test. diff --git a/gcc/testsuite/g++.dg/template/redecl1.C b/gcc/testsuite/g++.dg/template/redecl1.C new file mode 100644 index 0000000..1bbf20e --- /dev/null +++ b/gcc/testsuite/g++.dg/template/redecl1.C @@ -0,0 +1,4 @@ +// PR c++/15025 + +template <int> struct X; +struct X {}; // { dg-error "" } |