mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
diagnostics: require callers of diagnostic_show_locus to be explicit about the printer [PR116613]
As work towards supporting multiple diagnostic outputs (where each output has its own pretty_printer), update diagnostic_show_locus so that the pretty_printer must always be explicitly passed in. No functional change intended. gcc/c-family/ChangeLog: PR other/116613 * c-format.cc (selftest::test_type_mismatch_range_labels): Explicitly pass in dc.m_printer to diagnostic_show_locus. gcc/ChangeLog: PR other/116613 * diagnostic-show-locus.cc (diagnostic_context::maybe_show_locus): Convert param "pp" from * to &. Drop logic for using the context's m_printer when the param is null. * diagnostic.h (diagnostic_context::maybe_show_locus): Convert param "pp" from * to &. (diagnostic_show_locus): Drop default "nullptr" value for pp param. Assert that it and context are nonnull. Pass pp by reference to maybe_show_locus. gcc/testsuite/ChangeLog: PR other/116613 * gcc.dg/plugin/expensive_selftests_plugin.c (test_richloc): Explicitly pass in dc.m_printer to diagnostic_show_locus. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
This commit is contained in:
@@ -5578,7 +5578,7 @@ test_type_mismatch_range_labels ()
|
||||
richloc.add_range (param, SHOW_RANGE_WITHOUT_CARET, ¶m_label);
|
||||
|
||||
test_diagnostic_context dc;
|
||||
diagnostic_show_locus (&dc, &richloc, DK_ERROR);
|
||||
diagnostic_show_locus (&dc, &richloc, DK_ERROR, dc.m_printer);
|
||||
if (c_dialect_cxx ())
|
||||
/* "char*", without a space. */
|
||||
ASSERT_STREQ (" printf (\"msg: %i\\n\", msg);\n"
|
||||
|
||||
@@ -3265,7 +3265,7 @@ add_location_if_nearby (const diagnostic_context &dc,
|
||||
void
|
||||
diagnostic_context::maybe_show_locus (const rich_location &richloc,
|
||||
diagnostic_t diagnostic_kind,
|
||||
pretty_printer *pp,
|
||||
pretty_printer &pp,
|
||||
diagnostic_source_effect_info *effects)
|
||||
{
|
||||
const location_t loc = richloc.get_loc ();
|
||||
@@ -3287,12 +3287,8 @@ diagnostic_context::maybe_show_locus (const rich_location &richloc,
|
||||
|
||||
m_last_location = loc;
|
||||
|
||||
if (!pp)
|
||||
pp = m_printer;
|
||||
gcc_assert (pp);
|
||||
|
||||
diagnostic_source_print_policy source_policy (*this);
|
||||
source_policy.print (*pp, richloc, diagnostic_kind, effects);
|
||||
source_policy.print (pp, richloc, diagnostic_kind, effects);
|
||||
}
|
||||
|
||||
diagnostic_source_print_policy::
|
||||
|
||||
@@ -528,7 +528,7 @@ public:
|
||||
|
||||
void maybe_show_locus (const rich_location &richloc,
|
||||
diagnostic_t diagnostic_kind,
|
||||
pretty_printer *pp,
|
||||
pretty_printer &pp,
|
||||
diagnostic_source_effect_info *effect_info);
|
||||
|
||||
void emit_diagram (const diagnostic_diagram &diagram);
|
||||
@@ -981,11 +981,13 @@ inline void
|
||||
diagnostic_show_locus (diagnostic_context *context,
|
||||
rich_location *richloc,
|
||||
diagnostic_t diagnostic_kind,
|
||||
pretty_printer *pp = nullptr,
|
||||
pretty_printer *pp,
|
||||
diagnostic_source_effect_info *effect_info = nullptr)
|
||||
{
|
||||
gcc_assert (context);
|
||||
gcc_assert (richloc);
|
||||
context->maybe_show_locus (*richloc, diagnostic_kind, pp, effect_info);
|
||||
gcc_assert (pp);
|
||||
context->maybe_show_locus (*richloc, diagnostic_kind, *pp, effect_info);
|
||||
}
|
||||
|
||||
/* Because we read source files a second time after the frontend did it the
|
||||
|
||||
@@ -48,7 +48,7 @@ test_richloc (rich_location *richloc)
|
||||
{
|
||||
/* Run the diagnostic and fix-it printing code. */
|
||||
test_diagnostic_context dc;
|
||||
diagnostic_show_locus (&dc, richloc, DK_ERROR);
|
||||
diagnostic_show_locus (&dc, richloc, DK_ERROR, dc.m_printer);
|
||||
|
||||
/* Generate a diff. */
|
||||
edit_context ec (global_dc->get_file_cache ());
|
||||
|
||||
Reference in New Issue
Block a user