c++: Fix printing of C++20 template parameter object [PR97014]
authorMarek Polacek <polacek@redhat.com>
Thu, 1 Oct 2020 20:40:17 +0000 (16:40 -0400)
committerMarek Polacek <polacek@redhat.com>
Fri, 2 Oct 2020 22:48:39 +0000 (18:48 -0400)
No one is interested in the mangled name of the C++20 template parameter
object for a class NTTP.  So instead of printing

  required for the satisfaction of ‘positive<T::ratio>’ [with T = X<::_ZTAXtl5ratioLin1ELi2EEE>]

let's print

  required for the satisfaction of ‘positive<T::ratio>’ [with T = X<{-1, 2}>]

I don't think adding a test is necessary for this.

gcc/cp/ChangeLog:

PR c++/97014
* cxx-pretty-print.c (pp_cxx_template_argument_list): If the
argument is template_parm_object_p, print its DECL_INITIAL.

gcc/cp/cxx-pretty-print.c

index d10c18db0398a6d3f97d59b58881ee9dcbd01820..8bea79b93a2fcebc59815688bcc62847f4e4cb8d 100644 (file)
@@ -1910,6 +1910,8 @@ pp_cxx_template_argument_list (cxx_pretty_printer *pp, tree t)
          if (TYPE_P (arg) || (TREE_CODE (arg) == TEMPLATE_DECL
                               && TYPE_P (DECL_TEMPLATE_RESULT (arg))))
            pp->type_id (arg);
+         else if (template_parm_object_p (arg))
+           pp->expression (DECL_INITIAL (arg));
          else
            pp->expression (arg);
        }