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

@ -820,7 +820,7 @@ public:
struct ui_file *stream, int show, int level,
const struct type_print_options *flags) const override
{
c_print_type (type, varstring, stream, show, level, flags);
c_print_type (type, varstring, stream, show, level, la_language, flags);
}
/* See language.h. */
@ -966,7 +966,7 @@ public:
struct ui_file *stream, int show, int level,
const struct type_print_options *flags) const override
{
c_print_type (type, varstring, stream, show, level, flags);
c_print_type (type, varstring, stream, show, level, la_language, flags);
}
/* See language.h. */
@ -1066,7 +1066,7 @@ public:
struct ui_file *stream, int show, int level,
const struct type_print_options *flags) const override
{
c_print_type (type, varstring, stream, show, level, flags);
c_print_type (type, varstring, stream, show, level, la_language, flags);
}
/* See language.h. */
@ -1118,7 +1118,7 @@ public:
struct ui_file *stream, int show, int level,
const struct type_print_options *flags) const override
{
c_print_type (type, varstring, stream, show, level, flags);
c_print_type (type, varstring, stream, show, level, la_language, flags);
}
/* See language.h. */