diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2005-08-22 09:48:26 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2005-08-22 09:48:26 +0000 |
commit | f1cc051537237722be3976b782bfd4336610ba55 (patch) | |
tree | 7689a3ef10af399440a1361ba2ec2f69567cd4aa /gcc | |
parent | dff1b563b3b6568ed7fca16e435a929f255bce0a (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/param1.C | 12 |
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; |