aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2004-05-23 21:06:56 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2004-05-23 21:06:56 +0000
commit9ce1594a3e521c3b0f6bd8b8eba1cc3a14e5ced7 (patch)
tree12483800056c2eb68f15aaf63464308c42054407 /gcc
parentf746161e4ffa1427f1b2c7b08fafaad3046a9222 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/redecl1.C4
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 "" }