* c-typeprint.c (c_type_print_args): Don't print "void"

for java, regardless of whether it is TYPE_PROTOTYPED.
  Use the passed-in language instead of current_language.
  (c_type_print_varspec_suffix): Use current_language instead
  of assuming language_c.
  * jv-typeprint.c (java_type_print_base): (bz 9320) Strip off
  any return type specifier from the physname.
This commit is contained in:
Keith Seitz 2010-03-31 00:48:29 +00:00
parent fd7f724a31
commit 86ffb50612
3 changed files with 26 additions and 6 deletions

View file

@ -1,3 +1,13 @@
2010-03-30 Keith Seitz <keiths@redhat.com>
* c-typeprint.c (c_type_print_args): Don't print "void"
for java, regardless of whether it is TYPE_PROTOTYPED.
Use the passed-in language instead of current_language.
(c_type_print_varspec_suffix): Use current_language instead
of assuming language_c.
* jv-typeprint.c (java_type_print_base): (bz 9320) Strip off
any return type specifier from the physname.
2010-03-30 Pedro Alves <pedro@codesourcery.com> 2010-03-30 Pedro Alves <pedro@codesourcery.com>
* tui/tui-interp.c (tui_is_toplevel): New. * tui/tui-interp.c (tui_is_toplevel): New.

View file

@ -416,8 +416,8 @@ c_type_print_args (struct type *type, struct ui_file *stream,
} }
} }
else if (!printed_any else if (!printed_any
&& (TYPE_PROTOTYPED (type) && ((TYPE_PROTOTYPED (type) && language != language_java)
|| current_language->la_language == language_cplus)) || language == language_cplus))
fprintf_filtered (stream, "void"); fprintf_filtered (stream, "void");
fprintf_filtered (stream, ")"); fprintf_filtered (stream, ")");
@ -616,7 +616,7 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
if (passed_a_ptr) if (passed_a_ptr)
fprintf_filtered (stream, ")"); fprintf_filtered (stream, ")");
if (!demangled_args) if (!demangled_args)
c_type_print_args (type, stream, 1, language_c); c_type_print_args (type, stream, 1, current_language->la_language);
c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show, c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show,
passed_a_ptr, 0); passed_a_ptr, 0);
break; break;

View file

@ -28,6 +28,7 @@
#include "typeprint.h" #include "typeprint.h"
#include "c-lang.h" #include "c-lang.h"
#include "cp-abi.h" #include "cp-abi.h"
#include "gdb_assert.h"
/* Local functions */ /* Local functions */
@ -219,10 +220,19 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show,
for (j = 0; j < n_overloads; j++) for (j = 0; j < n_overloads; j++)
{ {
char *physname; char *real_physname, *physname, *p;
int is_full_physname_constructor; int is_full_physname_constructor;
physname = TYPE_FN_FIELD_PHYSNAME (f, j); real_physname = TYPE_FN_FIELD_PHYSNAME (f, j);
/* The physname will contain the return type
after the final closing parenthesis. Strip it off. */
p = strrchr (real_physname, ')');
gdb_assert (p != NULL);
++p; /* Keep the trailing ')'. */
physname = alloca (p - real_physname + 1);
memcpy (physname, real_physname, p - real_physname);
physname[p - real_physname] = '\0';
is_full_physname_constructor is_full_physname_constructor
= (is_constructor_name (physname) = (is_constructor_name (physname)
@ -268,7 +278,7 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show,
/* Build something we can demangle. */ /* Build something we can demangle. */
mangled_name = gdb_mangle_name (type, i, j); mangled_name = gdb_mangle_name (type, i, j);
else else
mangled_name = TYPE_FN_FIELD_PHYSNAME (f, j); mangled_name = physname;
demangled_name = demangled_name =
cplus_demangle (mangled_name, cplus_demangle (mangled_name,