OSDN Git Service

gcc/cp/
authorsimartin <simartin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Nov 2009 21:37:23 +0000 (21:37 +0000)
committersimartin <simartin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Nov 2009 21:37:23 +0000 (21:37 +0000)
2009-11-20  Simon Martin  <simartin@users.sourceforge.net>

PR c++/38646
* pt.c (process_partial_specialization): Do not turn wrongly located
parameter pack arguments into error_mark_node.
Split too long lines into two.

gcc/testsuite/

2009-11-20  Simon Martin  <simartin@users.sourceforge.net>

PR c++/38646
* g++.dg/cpp0x/pr38646.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154378 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/pr38646.C [new file with mode: 0644]

index a4024ef..520262e 100644 (file)
@@ -1,3 +1,10 @@
+2009-11-20  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/38646
+       * pt.c (process_partial_specialization): Do not turn wrongly located
+       parameter pack arguments into error_mark_node.
+       Split too long lines into two.
+
 2009-11-20  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/42060
index c3b0f0e..0a19444 100644 (file)
@@ -3795,12 +3795,11 @@ process_partial_specialization (tree decl)
                   || (!packed_args && i < nargs - 1))
                 {
                   if (TREE_CODE (arg) == EXPR_PACK_EXPANSION)
-                    error ("parameter pack argument %qE must be at the end of the template argument list", arg);
+                    error ("parameter pack argument %qE must be at the "
+                          "end of the template argument list", arg);
                   else
-                    error ("parameter pack argument %qT must be at the end of the template argument list", arg);
-
-                 if (packed_args)
-                   TREE_VEC_ELT (packed_args, j) = error_mark_node;
+                    error ("parameter pack argument %qT must be at the "
+                          "end of the template argument list", arg);
                 }
             }
 
index ecedddc..51d1d32 100644 (file)
@@ -1,3 +1,8 @@
+2009-11-20  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/38646
+       * g++.dg/cpp0x/pr38646.C: New test.
+
 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * gcc.dg/c99-stdint-6.c: Set dg-options for alpha*-dec-osf5*.
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr38646.C b/gcc/testsuite/g++.dg/cpp0x/pr38646.C
new file mode 100644 (file)
index 0000000..3ef74cd
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR c++/38646 */
+/* { dg-do "compile" } */
+/* { dg-options "-std=c++0x" } */
+
+template<int...> struct A;
+
+template<int... N> struct A<N..., N...> /* { dg-error "must be at the end" } */
+{
+  template<typename> struct B;
+
+  template<typename T> struct B<T*> {};
+};