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

--- Comment #13 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalc...@gcc.gnu.org>:

https://gcc.gnu.org/g:cb1d203445c923aa64bca01b0ffb6d3d16a82130

commit r16-1406-gcb1d203445c923aa64bca01b0ffb6d3d16a82130
Author: David Malcolm <dmalc...@redhat.com>
Date:   Tue Jun 10 20:06:38 2025 -0400

    diagnostics: make experimental-html sink prettier [PR116792]

    This patch to the "experimental-html" diagnostic sink:
    * adds use of the PatternFly 3 CSS library (via an optional link
      in the generated html to a copy in a CDN)
    * uses PatternFly's "alert" pattern to show severities for diagnostics,
      properly nesting "note" diagnostics for diagnostic groups.
      Example:
        before:
https://dmalcolm.fedorapeople.org/gcc/2025-06-10/before/diagnostic-ranges.c.html
         after:
https://dmalcolm.fedorapeople.org/gcc/2025-06-10/after/diagnostic-ranges.c.html

    * adds initial support for logical locations and physical locations
    * adds initial support for multi-level nested diagnostics such as those
      for C++ concepts diagnostics.  Ideally this would show a clickable
      disclosure widget to expand/collapse a level, but for now it uses
      nested <ul> elements with <li> for the child diagnostics.
      Example:
        before:
https://dmalcolm.fedorapeople.org/gcc/2025-06-10/before/nested-diagnostics-1.C.html
         after:
https://dmalcolm.fedorapeople.org/gcc/2025-06-10/after/nested-diagnostics-1.C.html

    gcc/ChangeLog:
            PR other/116792
            * diagnostic-format-html.cc: Include "diagnostic-path.h" and
            "diagnostic-client-data-hooks.h".
            (html_builder::m_logical_loc_mgr): New field.
            (html_builder::m_cur_nesting_levels): New field.
            (html_builder::m_last_logical_location): New field.
            (html_builder::m_last_location): New field.
            (html_builder::m_last_expanded_location): New field.
            (HTML_STYLE): Add "white-space: pre;" to .source and .annotation.
            Add "gcc-quoted-text" CSS class.
            (html_builder::html_builder): Initialize the new fields.  If CSS
            is enabled, add CDN links to PatternFly 3 stylesheets.
            (html_builder::add_stylesheet): New.
            (html_builder::on_report_diagnostic): Add "alert" param to
            make_element_for_diagnostic, setting it by default, but unsetting
            it for nested diagnostics below the top level.  Use
            add_at_nesting_level for nested diagnostics.
            (add_nesting_level_attr): New.
            (html_builder::add_at_nesting_level): New.
            (get_pf_class_for_alert_div): New.
            (get_pf_class_for_alert_icon): New.
            (get_label_for_logical_location_kind): New.
            (add_labelled_value): New.
            (html_builder::make_element_for_diagnostic): Add leading comment.
            Add "alert" param.  Drop class="gcc-diagnostic" from <div> tag,
            instead adding the class for a PatternFly 3 alert if "alert" is
            true, and adding a <span> with an alert icon, both according to
            the diagnostic severity.  Add a severity prefix to the message for
            alerts.  Add any metadata/option text as suffixes to the message.
            Show any logical location.  Show any physical location.  Don't
            show the locus if the last location is unchanged within the
            diagnostic_group.  Wrap any execution path element in a
            <div id="execution-path"> and add a label to it.  Wrap any
            generated patch in a <div id="suggested-fix"> and add a label
            to it.
            (selftest::test_simple_log): Update expected HTML.

    gcc/testsuite/ChangeLog:
            PR other/116792
            * gcc.dg/html-output/missing-semicolon.py: Update for changes
            to diagnostic elements.
            * gcc.dg/format/diagnostic-ranges-html.py: Likewise.
            * gcc.dg/plugin/diagnostic-test-metadata-html.py: Likewise.  Drop
            out-of-date comment.
            * gcc.dg/plugin/diagnostic-test-paths-2.py: Likewise.
            * gcc.dg/plugin/diagnostic-test-paths-4.py: Likewise.  Drop
            out-of-date comment.
            * gcc.dg/plugin/diagnostic-test-show-locus.py: Likewise.
            * lib/htmltest.py (get_diag_by_index): Update to use search by id.
            (get_message_within_diag): Update to use search by class.

    libcpp/ChangeLog:
            PR other/116792
            * include/line-map.h (typedef expanded_location): Convert to...
            (struct expanded_location): ...this.
            (operator==): New decl, for expanded_location.
            (operator!=): Likewise.
            * line-map.cc (operator==): New decl, for expanded_location.

    Signed-off-by: David Malcolm <dmalc...@redhat.com>

Reply via email to