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

Reply via email to