From: Jason Merrill Date: Tue, 31 Mar 2009 19:13:15 +0000 (-0400) Subject: ptree.c (cxx_print_decl): Pretty-print full name of function/template. X-Git-Tag: releases/gcc-4.5.0~6989 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fba1b95f239ccead8ac1373c61a77e660efaa650;p=thirdparty%2Fgcc.git ptree.c (cxx_print_decl): Pretty-print full name of function/template. * ptree.c (cxx_print_decl): Pretty-print full name of function/template. (cxx_print_type): Pretty-print full name of class. From-SVN: r145368 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9782f94d9239..21a5f07f4145 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2009-03-31 Jason Merrill + * ptree.c (cxx_print_decl): Pretty-print full name of + function/template. + (cxx_print_type): Pretty-print full name of class. + * decl.c (grokdeclarator): Reject pointer to qualified function type. diff --git a/gcc/cp/ptree.c b/gcc/cp/ptree.c index c91cb15dc744..2452abc46225 100644 --- a/gcc/cp/ptree.c +++ b/gcc/cp/ptree.c @@ -44,7 +44,23 @@ cxx_print_decl (FILE *file, tree node, int indent) if (!CODE_CONTAINS_STRUCT (TREE_CODE (node), TS_DECL_COMMON) || !DECL_LANG_SPECIFIC (node)) return; + if (TREE_CODE (node) == FUNCTION_DECL) + { + int flags = TFF_DECL_SPECIFIERS|TFF_RETURN_TYPE + |TFF_FUNCTION_DEFAULT_ARGUMENTS|TFF_EXCEPTION_SPECIFICATION ; + indent_to (file, indent + 3); + fprintf (file, " full-name \"%s\"", decl_as_string (node, flags)); + } + else if (TREE_CODE (node) == TEMPLATE_DECL) + { + indent_to (file, indent + 3); + fprintf (file, " full-name \"%s\"", + decl_as_string (node, TFF_TEMPLATE_HEADER)); + } + indent_to (file, indent + 3); + if (DECL_EXTERNAL (node) && DECL_NOT_REALLY_EXTERN (node)) + fprintf (file, " not-really-extern"); if (TREE_CODE (node) == FUNCTION_DECL && DECL_PENDING_INLINE_INFO (node)) fprintf (file, " pending-inline-info %p", @@ -81,6 +97,9 @@ cxx_print_type (FILE *file, tree node, int indent) case RECORD_TYPE: case UNION_TYPE: + indent_to (file, indent + 4); + fprintf (file, "full-name \"%s\"", + type_as_string (node, TFF_CLASS_KEY_OR_ENUM)); break; default: @@ -97,7 +116,7 @@ cxx_print_type (FILE *file, tree node, int indent) indent_to (file, indent + 3); if (TYPE_NEEDS_CONSTRUCTING (node)) - fputs ( "needs-constructor", file); + fputs ( " needs-constructor", file); if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (node)) fputs (" needs-destructor", file); if (TYPE_HAS_DEFAULT_CONSTRUCTOR (node))