* c-objc-common.c (c_tree_printer): Handle types correctly.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Oct 2003 07:14:43 +0000 (07:14 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Oct 2003 07:14:43 +0000 (07:14 +0000)
        Factor code a bit.

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

gcc/ChangeLog
gcc/c-objc-common.c

index 822ff44..fee124f 100644 (file)
@@ -1,3 +1,8 @@
+2003-10-30  Richard Henderson  <rth@redhat.com>
+
+       * c-objc-common.c (c_tree_printer): Handle types correctly.
+       Factor code a bit.
+
 2003-10-30 Kelley Cook <kcook@gcc.gnu.org>
 
        * value-prof.c, web.c: Update to C90.
index 287cf30..e9a4a09 100644 (file)
@@ -293,29 +293,41 @@ static bool
 c_tree_printer (pretty_printer *pp, text_info *text)
 {
   tree t = va_arg (*text->args_ptr, tree);
+  const char *n = "({anonymous})";
 
   switch (*text->format_spec)
     {
     case 'D':
     case 'F':
+      if (DECL_NAME (t))
+       n = (*lang_hooks.decl_printable_name) (t, 2);
+      break;
+
     case 'T':
-      {
-        const char *n = DECL_NAME (t)
-          ? (*lang_hooks.decl_printable_name) (t, 2)
-          : "({anonymous})";
-        pp_string (pp, n);
-      }
-      return true;
+      if (TREE_CODE (t) == TYPE_DECL)
+       {
+         if (DECL_NAME (t))
+           n = (*lang_hooks.decl_printable_name) (t, 2);
+       }
+      else
+       {
+         t = TYPE_NAME (t);
+         if (t)
+           n = IDENTIFIER_POINTER (t);
+       }
+      break;
 
     case 'E':
-       if (TREE_CODE (t) == IDENTIFIER_NODE)
-         {
-           pp_string (pp, IDENTIFIER_POINTER (t));
-           return true;
-         }
-       return false;
+      if (TREE_CODE (t) == IDENTIFIER_NODE)
+       n = IDENTIFIER_POINTER (t);
+      else
+        return false;
+      break;
 
     default:
       return false;
     }
+
+  pp_string (pp, n);
+  return true;
 }