From 0bda14278328f264fdbbdc0e0da5318a77746b8a Mon Sep 17 00:00:00 2001 From: reichelt Date: Mon, 22 Aug 2005 09:48:26 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103339 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 1 + gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/template/param1.C | 12 ++++++++++++ 4 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/g++.dg/template/param1.C 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 + 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 + 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 + PR c++/22233 + * g++.dg/template/param1.C: New test. + +2005-08-22 Volker Reichelt + 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 +// { dg-do compile } + +template struct A +{ + A(); +}; + +template A::A() {} // { dg-error "got 2|but 1 required" } + +A<0> a; -- 2.7.4