diagnostics: tweaks to line-spans vs line numbering (PR 87091)
This patch tweaks how line numbers are printed for a diagnostic
containing multiple line spans.
With this patch, rather than printing span headers:
../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:74:1:
++ |+#include <vector>
74 | #endif
../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22:
87 | using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
| ^~~
we now print:
../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
+++ |+#include <vector>
74 | #endif
....
87 | using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
| ^~~
and for sufficiently close lines, rather than print a gap:
+ |+#include <stdio.h>
1 | test (int ch)
..
3 | putchar (ch);
| ^~~~~~~
we print the line itself:
+ |+#include <stdio.h>
1 | test (int ch)
2 | {
3 | putchar (ch);
| ^~~~~~~
gcc/ChangeLog:
PR 87091
* diagnostic-show-locus.c (layout::layout): Ensure the margin is
wide enough for jumps in the line-numbering to be visible.
(layout::print_gap_in_line_numbering): New member function.
(layout::calculate_line_spans): When using line numbering, merge
line spans that are only 1 line apart.
(diagnostic_show_locus): When printing line numbers, show gaps in
line numbering directly, rather than printing headers.
(selftest::test_diagnostic_show_locus_fixit_lines): Add test of
line-numbering with multiple line spans.
(selftest::test_fixit_insert_containing_newline_2): Add test of
line-numbering, in which the spans are close enough to be merged.
gcc/testsuite/ChangeLog:
PR 87091
* gcc.dg/missing-header-fixit-3.c: Update for changes to how
line spans are printed with -fdiagnostics-show-line-numbers.
From-SVN: r263843