Support prefixes in diagnostic_show_locus

Programming / Compilers / GCC - dmalcolm [138bc75d-0d04-0410-961f-82ee72b054a4] - 1 October 2019 21:58 EDT

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.

gcc/c-family/ChangeLog:
- c-opts.c (c_diagnostic_finalizer): Temporarily clear prefix when calling diagnostic_show_locus, rather than destroying it afterwards.

gcc/ChangeLog:
- 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.

gcc/fortran/ChangeLog:
- error.c (gfc_diagnostic_starter): Clear the prefix before calling diagnostic_show_locus.

gcc/testsuite/ChangeLog:
- 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(-)

Upstream: gcc.gnu.org


  • Share