aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2005-08-22 09:48:26 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2005-08-22 09:48:26 +0000
commitf1cc051537237722be3976b782bfd4336610ba55 (patch)
tree7689a3ef10af399440a1361ba2ec2f69567cd4aa /gcc
parentdff1b563b3b6568ed7fca16e435a929f255bce0a (diff)
downloadgcc-f1cc051537237722be3976b782bfd4336610ba55.zip
gcc-f1cc051537237722be3976b782bfd4336610ba55.tar.gz
gcc-f1cc051537237722be3976b782bfd4336610ba55.tar.bz2
re PR c++/22233 (ICE with wrong number of template parameters)
PR c++/22233 * pt.c (push_template_decl_real): Return error_mark_node if the number of template parameters does not match previous definition. * g++.dg/template/param1.C: New test. From-SVN: r103339
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/param1.C12
4 files changed, 24 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 765ce9c..0ad264f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,11 @@
2005-08-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+ PR c++/22233
+ * pt.c (push_template_decl_real): Return error_mark_node if the
+ number of template parameters does not match previous definition.
+
+2005-08-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
PR c++/23089
* decl.c (require_complete_types_for_parms): Mark incomplete types
as invalid.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 73e2a25..f217198 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -3109,6 +3109,7 @@ push_template_decl_real (tree decl, int is_friend)
error ("got %d template parameters for %q#T",
TREE_VEC_LENGTH (a), current);
error (" but %d required", TREE_VEC_LENGTH (t));
+ return error_mark_node;
}
/* Perhaps we should also check that the parms are used in the
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5d6a682..b85a569 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2005-08-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+ PR c++/22233
+ * g++.dg/template/param1.C: New test.
+
+2005-08-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
PR c++/23089
* g++.dg/other/incomplete1.C: New test.
diff --git a/gcc/testsuite/g++.dg/template/param1.C b/gcc/testsuite/g++.dg/template/param1.C
new file mode 100644
index 0000000..ad7fc8c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/param1.C
@@ -0,0 +1,12 @@
+// PR c++/22233
+// Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+// { dg-do compile }
+
+template<int> struct A
+{
+ A();
+};
+
+template<int N, char> A<N>::A() {} // { dg-error "got 2|but 1 required" }
+
+A<0> a;