[Bug c++/87091] Malformed fix-it hint for missing header

dmalcolm at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Aug 24 21:18:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87091

--- Comment #3 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Author: dmalcolm
Date: Fri Aug 24 21:17:48 2018
New Revision: 263843

URL: https://gcc.gnu.org/viewcvs?rev=263843&root=gcc&view=rev
Log:
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.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/diagnostic-show-locus.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/missing-header-fixit-3.c


More information about the Gcc-bugs mailing list