diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-08-26 00:37:48 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-08-26 00:37:48 +0000 |
commit | 7acf7efa8947cf2990cbdc670ea3adeace4a4394 (patch) | |
tree | e5b2e12b5e3923b4163cd80361966ae239ba32ea /gcc | |
parent | 398cd19904a68a7f5b7c1a138d9f602f2165d579 (diff) | |
download | gcc-7acf7efa8947cf2990cbdc670ea3adeace4a4394.zip gcc-7acf7efa8947cf2990cbdc670ea3adeace4a4394.tar.gz gcc-7acf7efa8947cf2990cbdc670ea3adeace4a4394.tar.bz2 |
re PR c++/28853 (ICE on invalid declaration with template template parameter)
PR c++/28853
* typeck2.c (cxx_incomplete_type_diagnostic): Handle template
template parameters. Improve error message for template type
parameters.
* g++.dg/template/ttp21.C: New test.
From-SVN: r116464
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/typeck2.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/ttp21.C | 5 |
4 files changed, 19 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c56f756..171103b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2006-08-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + PR c++/28853 + * typeck2.c (cxx_incomplete_type_diagnostic): Handle template + template parameters. Improve error message for template type + parameters. + PR c++/28852 * cp-tree.h (grok_op_properties): Return bool instead of void. * decl.c (grokfndecl): Discard invalid operator declarations. diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index bef448b..6d847cb 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -403,7 +403,12 @@ cxx_incomplete_type_diagnostic (tree value, tree type, int diag_type) break; case TEMPLATE_TYPE_PARM: - p_msg ("invalid use of template type parameter"); + p_msg ("invalid use of template type parameter %qT", type); + break; + + case BOUND_TEMPLATE_TEMPLATE_PARM: + p_msg ("invalid use of template template parameter %qT", + TYPE_NAME (type)); break; case TYPENAME_TYPE: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8fa3f7f..39d2fc8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2006-08-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + PR c++/28853 + * g++.dg/template/ttp21.C: New test. + PR c++/28852 * g++.dg/other/operator1.C: Add error-marker. * g++.dg/other/operator2.C: New test. diff --git a/gcc/testsuite/g++.dg/template/ttp21.C b/gcc/testsuite/g++.dg/template/ttp21.C new file mode 100644 index 0000000..f0bda99 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/ttp21.C @@ -0,0 +1,5 @@ +// PR c++/28853 +// { dg-do compile } + +template<template<int> class A> +int A<0>::i; // { dg-error "template template parameter" } |