summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2007-08-31 11:38:45 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2007-08-31 11:38:45 +0000
commita0bf269cc2c3884fc0a0a4f3cfe40c48c57e2b19 (patch)
tree724045b3e965a5a1835e53dcf4eab274cfd99dc2
parent98fccce54ab1ec00e4ff4d4b6778c049d3ef22b1 (diff)
downloadppe42-gcc-a0bf269cc2c3884fc0a0a4f3cfe40c48c57e2b19.tar.gz
ppe42-gcc-a0bf269cc2c3884fc0a0a4f3cfe40c48c57e2b19.zip
/cp
2007-08-31 Paolo Carlini <pcarlini@suse.de> PR c++/33210 * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BOUND_TEMPLATE_TEMPLATE_PARM. /testsuite 2007-08-31 Paolo Carlini <pcarlini@suse.de> PR c++/33210 * g++.dg/template/error30.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127987 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/cxx-pretty-print.c11
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/error30.C5
4 files changed, 24 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index eb814766436..b79324f4358 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,11 @@
2007-08-31 Paolo Carlini <pcarlini@suse.de>
+ PR c++/33210
+ * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
+ BOUND_TEMPLATE_TEMPLATE_PARM.
+
+2007-08-31 Paolo Carlini <pcarlini@suse.de>
+
PR c++/32113
* search.c (lookup_member): Check the name argument for
error_mark_node.
diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c
index 158cbc4f076..4bdd19d57e6 100644
--- a/gcc/cp/cxx-pretty-print.c
+++ b/gcc/cp/cxx-pretty-print.c
@@ -190,6 +190,8 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t)
case RECORD_TYPE:
case UNION_TYPE:
case ENUMERAL_TYPE:
+ case TYPENAME_TYPE:
+ case UNBOUND_CLASS_TEMPLATE:
pp_cxx_unqualified_id (pp, TYPE_NAME (t));
break;
@@ -205,9 +207,12 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t)
pp_cxx_unqualified_id (pp, TEMPLATE_PARM_DECL (t));
break;
- case TYPENAME_TYPE:
- case UNBOUND_CLASS_TEMPLATE:
- pp_cxx_unqualified_id (pp, TYPE_NAME (t));
+ case BOUND_TEMPLATE_TEMPLATE_PARM:
+ pp_cxx_cv_qualifier_seq (pp, t);
+ pp_cxx_unqualified_id (pp, TYPE_IDENTIFIER (t));
+ pp_cxx_begin_template_argument_list (pp);
+ pp_cxx_template_argument_list (pp, TYPE_TI_ARGS (t));
+ pp_cxx_end_template_argument_list (pp);
break;
default:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 134ea79cc4a..82d3f3a31e5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2007-08-31 Paolo Carlini <pcarlini@suse.de>
+ PR c++/33210
+ * g++.dg/template/error30.C: New.
+
+2007-08-31 Paolo Carlini <pcarlini@suse.de>
+
PR c++/32113
* g++.dg/template/crash70.C: New.
diff --git a/gcc/testsuite/g++.dg/template/error30.C b/gcc/testsuite/g++.dg/template/error30.C
new file mode 100644
index 00000000000..e1138d052ec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/error30.C
@@ -0,0 +1,5 @@
+// PR c++/33210
+
+template<int> struct A;
+
+template<template<typename> class B> A<B<int>::x> operator() (); // { dg-error "A<B<int>::x>" }
OpenPOWER on IntegriCloud