diff options
author | David Malcolm <dmalcolm@redhat.com> | 2019-10-01 21:58:17 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2019-10-01 21:58:17 +0000 |
commit | e9c9a142b49d069c5b7c24d47b07756e9d591956 (patch) | |
tree | 1733bd2afdb942dcf5381fec2e6e5d79071d9db8 /gcc/fortran | |
parent | a16bc2f317ddfeb45a6b293aec4d89afe0e79a72 (diff) | |
download | gcc-e9c9a142b49d069c5b7c24d47b07756e9d591956.zip gcc-e9c9a142b49d069c5b7c24d47b07756e9d591956.tar.gz gcc-e9c9a142b49d069c5b7c24d47b07756e9d591956.tar.bz2 |
Support prefixes in diagnostic_show_locus
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.
From-SVN: r276433
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/error.c | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 694fc32..63ee15b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2019-10-01 David Malcolm <dmalcolm@redhat.com> + + * error.c (gfc_diagnostic_starter): Clear the prefix before + calling diagnostic_show_locus. + 2019-09-29 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/91641 diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c index a0ce7a6..a7c27f0 100644 --- a/gcc/fortran/error.c +++ b/gcc/fortran/error.c @@ -1137,6 +1137,7 @@ gfc_diagnostic_starter (diagnostic_context *context, free (locus_prefix); /* Fortran uses an empty line between locus and caret line. */ pp_newline (context->printer); + pp_set_prefix (context->printer, NULL); diagnostic_show_locus (context, diagnostic->richloc, diagnostic->kind); /* If the caret line was shown, the prefix does not contain the locus. */ |