OSDN Git Service

2007-09-28 Paolo Carlini <pcarlini@suse.de>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Sep 2007 15:10:13 +0000 (15:10 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Sep 2007 15:10:13 +0000 (15:10 +0000)
PR c++/33118
* error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
(dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
(dump_parameters): Just call dump_type for argument packs too.

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

gcc/cp/ChangeLog
gcc/cp/error.c

index 8c1d9e2..3e02375 100644 (file)
@@ -1,3 +1,10 @@
+2007-09-28  Paolo Carlini  <pcarlini@suse.de>
+
+       PR c++/33118
+       * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
+       (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
+       (dump_parameters): Just call dump_type for argument packs too.
+
 2007-09-27  Ollie Wild  <aaw@google.com>
 
        * typeck2.c (digest_init): Call cplus_expand_constant after
index 4337d4d..feb6c31 100644 (file)
@@ -396,16 +396,7 @@ dump_type (tree t, int flags)
       break;
 
     case TYPE_ARGUMENT_PACK:
-      {
-        tree args = ARGUMENT_PACK_ARGS (t);
-        int i;
-        for (i = 0; i < TREE_VEC_LENGTH (args); ++i)
-          {
-            if (i)
-              pp_separate_with_comma (cxx_pp);
-            dump_type (TREE_VEC_ELT (args, i), flags);
-          }
-      }
+      dump_template_argument (t, flags);
       break;
 
     case DECLTYPE_TYPE:
@@ -1168,22 +1159,8 @@ dump_parameters (tree parmtypes, int flags)
          pp_cxx_identifier (cxx_pp, "...");
          break;
        }
-      if (ARGUMENT_PACK_P (TREE_VALUE (parmtypes)))
-        {
-          tree types = ARGUMENT_PACK_ARGS (TREE_VALUE (parmtypes));
-          int i, len = TREE_VEC_LENGTH (types);
-         first = 1;
-          for (i = 0; i < len; ++i)
-            {
-              if (!first)
-                pp_separate_with_comma (cxx_pp);
-              first = 0;
-              
-              dump_type (TREE_VEC_ELT (types, i), flags);
-            }
-        }
-      else
-        dump_type (TREE_VALUE (parmtypes), flags);
+
+      dump_type (TREE_VALUE (parmtypes), flags);
 
       if ((flags & TFF_FUNCTION_DEFAULT_ARGUMENTS) && TREE_PURPOSE (parmtypes))
        {
@@ -2031,6 +2008,10 @@ dump_expr (tree t, int flags)
       pp_cxx_identifier (cxx_pp, "...");
       break;
 
+    case ARGUMENT_PACK_SELECT:
+      dump_template_argument (ARGUMENT_PACK_SELECT_FROM_PACK (t), flags);
+      break;
+
     case RECORD_TYPE:
     case UNION_TYPE:
     case ENUMERAL_TYPE: