Ping #2 for this kit:

On Fri, 2024-11-22 at 17:21 -0500, David Malcolm wrote:
> I'd like to ping this patch kit.
> 
> I've already pushed "[PATCH 1/3] diagnostics: add support for nested
> diagnostics [PR116253]" but was hoping for review from C++
> maintainers
> for patches 2 and 3:
> 
> [PATCH 2/3] c++: consolidate location printing in error.cc [PR116253]
>   https://gcc.gnu.org/pipermail/gcc-patches/2024-November/668469.html
> 
> [PATCH 3/3] c++: use diagnostic nesting [PR116253]
>   https://gcc.gnu.org/pipermail/gcc-patches/2024-November/668470.html
> 
> Screenshot:
>   https://gcc.gnu.org/bugzilla/attachment.cgi?id=59580
> 
> There are also some followups I posted last week that IMHO further
> improve the readability of template errors:
>  
> [PATCH 1/2] c++: print z candidate count and number them
>   https://gcc.gnu.org/pipermail/gcc-patches/2024-November/669035.html
> 
> [PATCH 2/2] diagnostics: suppress "note: " prefix in nested
> diagnostics [PR116253]
>   https://gcc.gnu.org/pipermail/gcc-patches/2024-November/669034.html
> 
> Screenshot with those followups:
>   https://gcc.gnu.org/bugzilla/attachment.cgi?id=59611
> 
> Thanks!
> Dave
> 
> 
> On Tue, 2024-11-12 at 09:02 -0500, David Malcolm wrote:
> > The following patch kit adds experimental support for nested
> > diagnostics to g++.
> > 
> > As noted in P3358R0 ("SARIF for Structured Diagnostics"), C++
> > diagnostics involving concepts can be made much more readable
> > by capturing the hierarchical structure of the diagnostics
> > and displaying this structure to the user (perhaps via
> > a UI that allows the user to drill down into the aspects
> > of the issue they are interested in).
> > 
> > Implementing this for GCC requires several things:
> > 
> > (a) extending the diagnostics subsystem so that it can
> >     represent hierarchically structured diagnostics internally
> > 
> > (b) extending the output formats (text and SARIF) to
> >     present/export such hierarchical structures
> > 
> > (c) extending the C++ frontend to capture the hierarchical
> >     structure
> > 
> > and all of these tasks are interrelated: for example,
> > we can't fix (c) if we don't have (a) and (b), and providing a
> > good user experience is likely to require iterating on all three
> > aspects.
> > 
> > Patch 1 of this patch kit implements (a) and (b), adding a plugin
> > to the test case to inject a placeholder hierarchical diagnostic,
> > adding SARIF output support (based on P3358R0), and text output
> > support.
> > 
> > The most natural way to present textual output is to use
> > indentation,
> > so patch 1 does this.  However, our existing textual format uses
> > the
> > source location as a prefix, e.g.
> >   PATH/foo.cc: error: message goes here
> > and unfortunately this makes the indented hierarchy unreadable
> > (especially if a tree of diagnostics spans multiple source files).
> > 
> > So for this patch kit I've retained the existing textual
> > presentation
> > by default; viewing the structure via indentation requires that
> > the user opt-in to a new text output style.  The patch implements
> > this via a new "experiment-nesting" key in the text output scheme,
> > so the option is:
> >   -fdiagnostics-set-output=text:experimental-nesting=yes
> > This is deliberately rather verbose to signal to the user that
> > they're opting-in to the new approach.
> > 
> > An example of the hierarchical text output can be seen in patch 3.
> > 
> > Patch 2 of the kit does some consolidation to the C++ FE in how
> > locations are printed, as a preliminary cleanup.
> > 
> > Patch 3 of the kit adds the hierarchical structuring to the C++ FE.
> > 
> > I've successfully bootstrapped & regrtested the kit on
> > x86_64-pc-linux-gnu.
> > 
> > I think I can self-approve patch 1; are patches 2 and 3 OK for the
> > C++ FE?
> > 
> > David Malcolm (3):
> >   diagnostics: add support for nested diagnostics [PR116253]
> >   c++: consolidate location printing in error.cc [PR116253]
> >   c++: use diagnostic nesting [PR116253]
> > 
> >  gcc/c-family/c-opts.cc                        |   2 +-
> >  gcc/cp/call.cc                                |  69 ++++----
> >  gcc/cp/constraint.cc                          |   5 +
> >  gcc/cp/error.cc                               | 164 +++++++++++---
> > --
> > --
> >  gcc/diagnostic-core.h                         |  12 ++
> >  gcc/diagnostic-format-sarif.cc                |  16 +-
> >  gcc/diagnostic-format-text.cc                 | 121 ++++++++++++-
> >  gcc/diagnostic-format-text.h                  |  34 +++-
> >  gcc/diagnostic-global-context.cc              |  12 ++
> >  gcc/diagnostic-show-locus.cc                  |   5 +
> >  gcc/diagnostic.cc                             |  29 +++-
> >  gcc/diagnostic.h                              |  15 +-
> >  gcc/doc/invoke.texi                           |  18 ++
> >  gcc/opts-diagnostic.cc                        |  32 +++-
> >  .../concepts/nested-diagnostics-1-truncated.C |  41 +++++
> >  .../g++.dg/concepts/nested-diagnostics-1.C    |  51 ++++++
> >  .../g++.dg/concepts/nested-diagnostics-2.C    |  37 ++++
> >  .../plugin/diagnostic-test-nesting-sarif.c    |  16 ++
> >  .../plugin/diagnostic-test-nesting-sarif.py   |  39 +++++
> >  ...c-test-nesting-text-indented-show-levels.c |  24 +++
> >  ...ostic-test-nesting-text-indented-unicode.c |  24 +++
> >  .../diagnostic-test-nesting-text-indented.c   |  24 +++
> >  .../diagnostic-test-nesting-text-plain.c      |   8 +
> >  .../plugin/diagnostic_plugin_test_nesting.c   | 145
> > ++++++++++++++++
> >  gcc/testsuite/gcc.dg/plugin/plugin.exp        |   6 +
> >  25 files changed, 838 insertions(+), 111 deletions(-)
> >  create mode 100644 gcc/testsuite/g++.dg/concepts/nested-
> > diagnostics-
> > 1-truncated.C
> >  create mode 100644 gcc/testsuite/g++.dg/concepts/nested-
> > diagnostics-
> > 1.C
> >  create mode 100644 gcc/testsuite/g++.dg/concepts/nested-
> > diagnostics-
> > 2.C
> >  create mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-test-
> > nesting-sarif.c
> >  create mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-test-
> > nesting-sarif.py
> >  create mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-test-
> > nesting-text-indented-show-levels.c
> >  create mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-test-
> > nesting-text-indented-unicode.c
> >  create mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-test-
> > nesting-text-indented.c
> >  create mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-test-
> > nesting-text-plain.c
> >  create mode 100644
> > gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_nesting.c
> > 
> 

Reply via email to