Previously, diagnostic_show_locus saved and restored the pretty_printer's prefix, clearing it for the duration of the call.
I have a patch kit in development that can benefit from applying a prefix to the output of d_s_l, so this patch adds support to d_s_l for printing such prefixes.
It moves the save and restore of the pp's prefix from d_s_l to all of its callers, and updates diagnostic-show-locus.c to properly handle prefixes.
- c-opts.c (c_diagnostic_finalizer): Temporarily clear prefix when calling diagnostic_show_locus, rather than destroying it afterwards.
- diagnostic-show-locus.c (layout::print_gap_in_line_numbering): Call pp_emit_prefix. (layout::print_source_line): Likewise. (layout::start_annotation_line): Likewise. (diagnostic_show_locus): Remove call to temporarily clear the prefix. (selftest::test_one_liner_fixit_remove): Add test coverage for the interaction of pp_set_prefix with rulers and fix-it hints.
- diagnostic.c (default_diagnostic_finalizer): Temporarily clear prefix when calling diagnostic_show_locus, rather than destroying it afterwards. (print_parseable_fixits): Temporarily clear prefix.
- pretty-print.c (pp_format): Save and restore line_length, rather than assuming it is zero. (pp_output_formatted_text): Remove assertion that line_length is zero.
- error.c (gfc_diagnostic_starter): Clear the prefix before calling diagnostic_show_locus.
- gcc.dg/plugin/diagnostic_group_plugin.c (test_begin_group_cb): Clear the prefix before emitting the "END GROUP" line.
- gcc.dg/plugin/diagnostic_plugin_test_show_locus.c (custom_diagnostic_finalizer): Temporarily clear prefix when calling diagnostic_show_locus, rather than destroying it afterwards.
b2902434a2c Support prefixes in diagnostic_show_locus
gcc/ChangeLog | 19 +++++
gcc/c-family/ChangeLog | 5 ++
gcc/c-family/c-opts.c | 4 +-
gcc/diagnostic-show-locus.c | 96 +++++++++++++++++++---
gcc/diagnostic.c | 9 +-
gcc/fortran/ChangeLog | 5 ++
gcc/fortran/error.c | 1 +
gcc/pretty-print.c | 4 +-
gcc/testsuite/ChangeLog | 9 ++
.../gcc.dg/plugin/diagnostic_group_plugin.c | 1 +
.../plugin/diagnostic_plugin_test_show_locus.c | 5 +-
11 files changed, 139 insertions(+), 19 deletions(-)