From 31d400080bc8e7ee3b28716817edcb9087263278 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Fri, 28 Sep 2007 15:10:13 +0000 Subject: [PATCH] re PR c++/33118 (#'argument_pack_select' not supported by dump_expr#) 2007-09-28 Paolo Carlini 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. From-SVN: r128866 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/error.c | 33 +++++++-------------------------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8c1d9e2b879..3e023754ddf 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2007-09-28 Paolo Carlini + + 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 * typeck2.c (digest_init): Call cplus_expand_constant after diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 4337d4d2630..feb6c31c544 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -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: