diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-07-21 09:41:16 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-07-21 09:41:16 +0000 |
commit | e488a090e6e7b25ca423628dc5a64bd88d793de3 (patch) | |
tree | ad3a875291855dd0d32ecabefd96ebf4530646f2 | |
parent | 79387e574aaf8493e7fa9faef537a98f297061f7 (diff) | |
download | gcc-e488a090e6e7b25ca423628dc5a64bd88d793de3.zip gcc-e488a090e6e7b25ca423628dc5a64bd88d793de3.tar.gz gcc-e488a090e6e7b25ca423628dc5a64bd88d793de3.tar.bz2 |
re PR c++/28363 (Default template parameter causes compiler segfault)
PR c++/28363
* semantics.c (check_template_template_default_arg): Simplify
error handling.
* g++.dg/template/defarg10.C: New test.
From-SVN: r115640
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/defarg10.C | 13 |
4 files changed, 26 insertions, 13 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 309a060..722334c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2006-07-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + PR c++/28363 + * semantics.c (check_template_template_default_arg): Simplify + error handling. + 2006-07-20 Jason Merrill <jason@redhat.com> PR c++/28407 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 4577bd3..c739d61 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2143,19 +2143,8 @@ check_template_template_default_arg (tree argument) && TREE_CODE (argument) != UNBOUND_CLASS_TEMPLATE) { if (TREE_CODE (argument) == TYPE_DECL) - { - tree t = TREE_TYPE (argument); - - /* Try to emit a slightly smarter error message if we detect - that the user is using a template instantiation. */ - if (CLASSTYPE_TEMPLATE_INFO (t) - && CLASSTYPE_TEMPLATE_INSTANTIATION (t)) - error ("invalid use of type %qT as a default value for a " - "template template-parameter", t); - else - error ("invalid use of %qD as a default value for a template " - "template-parameter", argument); - } + error ("invalid use of type %qT as a default value for a template " + "template-parameter", TREE_TYPE (argument)); else error ("invalid default argument for a template template parameter"); return error_mark_node; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 414d314..d56ce67 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-07-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + PR c++/28363 + * g++.dg/template/defarg10.C: New test. + 2006-07-20 Paul Brook <paul@codesourcery.com> PR 27363 diff --git a/gcc/testsuite/g++.dg/template/defarg10.C b/gcc/testsuite/g++.dg/template/defarg10.C new file mode 100644 index 0000000..281b108 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/defarg10.C @@ -0,0 +1,13 @@ +// PR c++/28363 +// { dg-do compile } + +template<typename T, template<int> class = T> // { dg-error "invalid use of type" } +struct A; + +typedef int I; +template<template<int> class = I> // { dg-error "invalid use of type" } +struct B; + +struct S; +template<template<int> class = S> // { dg-error "invalid use of type" } +struct C; |