For the common case where a diagnostic has no metadata, sarif-replay's html output was adding a stray space followed by an empty <div> for the metadata.
Fixed thusly. Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu. Pushed to trunk as r16-2765-g0fb30003867635. gcc/ChangeLog: PR diagnostics/116792 * diagnostics/html-sink.cc (html_builder::make_element_for_diagnostic): Don't add the metadata element if it's empty. (html_builder::make_element_for_metadata): Return null rather than an empty element. gcc/testsuite/ChangeLog: PR diagnostics/116792 * gcc.dg/plugin/diagnostic-test-graphs-html.py: Remove trailing space from expected text of message. * sarif-replay.dg/2.1.0-valid/embedded-links-check-html.py: Likewise. * sarif-replay.dg/2.1.0-valid/graphs-check-html.py: Likewise. --- gcc/diagnostics/html-sink.cc | 12 ++++++++---- .../gcc.dg/plugin/diagnostic-test-graphs-html.py | 2 +- .../2.1.0-valid/embedded-links-check-html.py | 2 +- .../sarif-replay.dg/2.1.0-valid/graphs-check-html.py | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/gcc/diagnostics/html-sink.cc b/gcc/diagnostics/html-sink.cc index 13d6309b7a45..934d8e2cb341 100644 --- a/gcc/diagnostics/html-sink.cc +++ b/gcc/diagnostics/html-sink.cc @@ -1018,10 +1018,11 @@ html_builder::make_element_for_diagnostic (const diagnostic_info &diagnostic, // Add any metadata as a suffix to the message if (diagnostic.m_metadata) - { - xp.add_text (" "); - xp.append (make_element_for_metadata (*diagnostic.m_metadata)); - } + if (auto e = make_element_for_metadata (*diagnostic.m_metadata)) + { + xp.add_text (" "); + xp.append (std::move (e)); + } // Add any option as a suffix to the message @@ -1234,6 +1235,9 @@ html_builder::make_element_for_metadata (const metadata &m) (make_metadata_element (std::move (label), std::move (url))); } + if (span_metadata->m_children.empty ()) + return nullptr; + return span_metadata; } diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-graphs-html.py b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-graphs-html.py index 11e5fd1a3859..9ff4645754af 100644 --- a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-graphs-html.py +++ b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-graphs-html.py @@ -26,7 +26,7 @@ def test_result_graph(html_tree): assert message.attrib['id'] == 'gcc-diag-0-message' assert message[0].tag == make_tag('strong') - assert message[0].tail == ' this is a placeholder error, with graphs ' + assert message[0].tail == ' this is a placeholder error, with graphs' graph = diag.find("./xhtml:div[@class='gcc-directed-graph']", ns) assert graph is not None diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/embedded-links-check-html.py b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/embedded-links-check-html.py index ff1c2f261853..845a7afed9f4 100644 --- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/embedded-links-check-html.py +++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/embedded-links-check-html.py @@ -25,4 +25,4 @@ def test_generated_html(html_tree): assert_tag(msg[1], 'a') assert msg[1].text == 'link' assert msg[1].get('href') == 'http://www.example.com' - assert msg[1].tail == '. ' + assert msg[1].tail == '.' diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/graphs-check-html.py b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/graphs-check-html.py index 63b80c98738f..355c84baa9c1 100644 --- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/graphs-check-html.py +++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/graphs-check-html.py @@ -24,7 +24,7 @@ def test_result_graph(html_tree): assert message.attrib['id'] == 'gcc-diag-0-message' assert message[0].tag == make_tag('strong') - assert message[0].tail == ' this is a placeholder error, with graphs ' + assert message[0].tail == ' this is a placeholder error, with graphs' graph = diag.find("./xhtml:div[@class='gcc-directed-graph']", ns) assert graph is not None -- 2.26.3