Always pass an explicit language down to c_type_print

The next patch will want to do language->print_type(type, ...), to
print a type in a given language, avoiding a dependency on the current
language.  That doesn't work correctly currently, however, because
most language implementations of language_defn::print_type call
c_print_type without passing down the language.  There are two
overloads of c_print_type, one that takes a language, and one that
does not.  The one that does not uses the current language, defeating
the point of calling language->print_type()...

This commit removes the c_print_type overload that does not take a
language, and adjusts the codebase throughout to always pass down a
language.  In most places, there's already an enum language handy.
language_defn::print_type implementations naturally pass down
this->la_language.  In a couple spots, like in ada-typeprint.c and
rust-lang.c there's no enum language handy, but the code is written
for a specific language, so we just hardcode the language.

In gnuv3_print_method_ptr, I wasn't sure whether we could hardcode C++
here, and we don't have an enum language handy, so I made it use the
current language, just like today.  Can always be improved later.

Change-Id: Ib54fab4cf0fd307bfd55bf1dd5056830096a653b
This commit is contained in:
Pedro Alves
2022-04-29 23:21:18 +01:00
parent cb2cd8cba8
commit 1c6fbf42e5
11 changed files with 29 additions and 40 deletions

View File

@ -659,7 +659,8 @@ gnuv3_print_method_ptr (const gdb_byte *contents,
{
/* Found a non-virtual function: print out the type. */
gdb_puts ("(", stream);
c_print_type (type, "", stream, -1, 0, &type_print_raw_options);
c_print_type (type, "", stream, -1, 0, current_language->la_language,
&type_print_raw_options);
gdb_puts (") ", stream);
}