diff options
| -rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/cp/parser.c | 1 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/template/error-recovery4.C | 5 |
4 files changed, 18 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9d74bdb..e4bd392 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2016-09-16 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/77639 + * parser.c (cp_parser_class_head): When + processing_template_parmlist, don't assume that the + class-head may start an explicit specialization. + 2016-09-16 Jakub Jelinek <jakub@redhat.com> PR c++/77482 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index fb88021..c03b9c2 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -22025,6 +22025,7 @@ cp_parser_class_head (cp_parser* parser, it is not, try to recover gracefully. */ if (at_namespace_scope_p () && parser->num_template_parameter_lists == 0 + && !processing_template_parmlist && template_id_p) { /* Build a location of this form: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 68d3973..f7d0048 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-09-19 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/77639 + * g++.dg/template/error-recovery4.C: New test. + 2016-09-19 Bin Cheng <bin.cheng@arm.com> * gcc.dg/vect/pr57558-1.c: Use unsigned int instead of unsigned long. diff --git a/gcc/testsuite/g++.dg/template/error-recovery4.C b/gcc/testsuite/g++.dg/template/error-recovery4.C new file mode 100644 index 0000000..1e52c6a --- /dev/null +++ b/gcc/testsuite/g++.dg/template/error-recovery4.C @@ -0,0 +1,5 @@ +// PR c++/77639 + +template <class, int, class, int> struct B {}; +template <class T, int a, class U struct B<T, a, U, 1> {}; // { dg-error "" } +B<int, 2, char, 1> i; |
