Skip to content

[clang] Minor updates to C++ DR page design #106360

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 28, 2024
Merged

Conversation

Endilll
Copy link
Contributor

@Endilll Endilll commented Aug 28, 2024

This patch updates make_cxx_dr_status script to use the same spoiler-like way to hide additional details that cxx_status.html uses. This gives implemented yet unresolved DRs new but very familiar look:
s9EpO0E

I also took an opportunity to fix spelling inconsistency pointed out by @zygoloid in #106299 (comment).

I got tired of counting %ss when we substitute data into HTML template, so I replaced them with an f-string (available since Python 3.6), because I had to touch this code anyway.

@Endilll Endilll added documentation clang Clang issues not falling into any other category labels Aug 28, 2024
@llvmbot
Copy link
Member

llvmbot commented Aug 28, 2024

@llvm/pr-subscribers-clang

Author: Vlad Serebrennikov (Endilll)

Changes

This patch updates make_cxx_dr_status script to use the same spoiler-like way to hide additional details that cxx_status.html uses. This gives implemented yet unresolved DRs new but very familiar look:
s9EpO0E

I also took an opportunity to fix spelling inconsistency pointed out by @zygoloid in #106299 (comment).

I got tired of counting %ss when we substitute data into HTML template, so I replaced them with an f-string (available since Python 3.6), because I had to touch this code anyway.


Full diff: https://github.com/llvm/llvm-project/pull/106360.diff

2 Files Affected:

  • (modified) clang/www/cxx_dr_status.html (+60-12)
  • (modified) clang/www/make_cxx_dr_status (+26-19)
diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index 124df56bb609c0..9c4aed35012bf0 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -2879,7 +2879,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/472.html">472</a></td>
     <td>drafting</td>
     <td>Casting across protected inheritance</td>
-    <td title="Clang does not implement 2011-04 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang does not implement 2011-04 resolution
+      </details></td>
   </tr>
   <tr id="473">
     <td><a href="https://cplusplus.github.io/CWG/issues/473.html">473</a></td>
@@ -7153,7 +7157,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/1223.html">1223</a></td>
     <td>drafting</td>
     <td>Syntactic disambiguation and <I>trailing-return-type</I>s</td>
-    <td title="Clang 17 implements 2023-05-12 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 17 implements 2023-05-12 resolution
+      </details></td>
   </tr>
   <tr id="1224">
     <td><a href="https://cplusplus.github.io/CWG/issues/1224.html">1224</a></td>
@@ -9319,7 +9327,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/1584.html">1584</a></td>
     <td>drafting</td>
     <td>Deducing function types from cv-qualified types</td>
-    <td title="Clang 7 implements 2015-05 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 7 implements 2015-05 resolution
+      </details></td>
   </tr>
   <tr id="1585">
     <td><a href="https://cplusplus.github.io/CWG/issues/1585.html">1585</a></td>
@@ -11155,7 +11167,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/1890.html">1890</a></td>
     <td>drafting</td>
     <td>Member type depending on definition of member function</td>
-    <td title="Clang does not implement 2018-06-04 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang does not implement 2018-06-04 resolution
+      </details></td>
   </tr>
   <tr id="1891">
     <td><a href="https://cplusplus.github.io/CWG/issues/1891.html">1891</a></td>
@@ -13825,7 +13841,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2335.html">2335</a></td>
     <td>drafting</td>
     <td>Deduced return types vs member types</td>
-    <td title="Clang does not implement 2018-06 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang does not implement 2018-06 resolution
+      </details></td>
   </tr>
   <tr id="2336">
     <td><a href="https://cplusplus.github.io/CWG/issues/2336.html">2336</a></td>
@@ -15133,13 +15153,21 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2553.html">2553</a></td>
     <td>review</td>
     <td>Restrictions on explicit object member functions</td>
-    <td title="Clang 18 implements 2023-07-14 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 18 implements 2023-07-14 resolution
+      </details></td>
   </tr>
   <tr class="open" id="2554">
     <td><a href="https://cplusplus.github.io/CWG/issues/2554.html">2554</a></td>
     <td>review</td>
     <td>Overriding virtual functions, also with explicit object parameters</td>
-    <td title="Clang 18 implements 2021-12-10 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 18 implements 2021-12-10 resolution
+      </details></td>
   </tr>
   <tr class="open" id="2555">
     <td><a href="https://cplusplus.github.io/CWG/issues/2555.html">2555</a></td>
@@ -15205,7 +15233,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2565.html">2565</a></td>
     <td>open</td>
     <td>Invalid types in the <I>parameter-declaration-clause</I> of a <I>requires-expression</I></td>
-    <td title="Clang 16 implements 2023-06-07 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 16 implements 2023-06-07 resolution
+      </details></td>
   </tr>
   <tr class="open" id="2566">
     <td><a href="https://cplusplus.github.io/CWG/issues/2566.html">2566</a></td>
@@ -16898,7 +16930,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2847.html">2847</a></td>
     <td>review</td>
     <td>Constrained explicit specializations of function templates at class scope</td>
-    <td title="Clang 19 implements 2024-03-01 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 19 implements 2024-03-01 resolution
+      </details></td>
   </tr>
   <tr id="2848">
     <td><a href="https://cplusplus.github.io/CWG/issues/2848.html">2848</a></td>
@@ -17126,7 +17162,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2885.html">2885</a></td>
     <td>review</td>
     <td>Non-eligible trivial default constructors</td>
-    <td title="Clang 16 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 16 implements 2024-05-31 resolution
+      </details></td>
   </tr>
   <tr id="2886">
     <td><a href="https://cplusplus.github.io/CWG/issues/2886.html">2886</a></td>
@@ -17318,7 +17358,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2917.html">2917</a></td>
     <td>review</td>
     <td>Disallow multiple <I>friend-type-specifier</I>s for a friend template</td>
-    <td title="Clang 20 implements 2024-07-30 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 20 implements 2024-07-30 resolution
+      </details></td>
   </tr>
   <tr class="open" id="2918">
     <td><a href="https://cplusplus.github.io/CWG/issues/2918.html">2918</a></td>
@@ -17348,7 +17392,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2922.html">2922</a></td>
     <td>tentatively ready</td>
     <td>constexpr placement-new is too permissive</td>
-    <td title="Clang 20 implements 2024-07-10 resolution" align="center">Not Resolved*</td>
+    <td align="center">
+      <details>
+        <summary>Not resolved</summary>
+        Clang 20 implements 2024-07-10 resolution
+      </details></td>
   </tr>
   <tr class="open" id="2923">
     <td><a href="https://cplusplus.github.io/CWG/issues/2923.html">2923</a></td>
diff --git a/clang/www/make_cxx_dr_status b/clang/www/make_cxx_dr_status
index 773f14cfe3199f..e245d0447baafc 100755
--- a/clang/www/make_cxx_dr_status
+++ b/clang/www/make_cxx_dr_status
@@ -156,7 +156,7 @@ def availability(issue):
 
   avail_suffix = ''
   avail_style = ''
-  tooltip = ''
+  details = ''
   if status.endswith(' c++11'):
     status = status[:-6]
     avail_suffix = ' (C++11 onwards)'
@@ -180,29 +180,29 @@ def availability(issue):
       else:
         avail_style = 'full'
     else: 
-      avail = 'Not Resolved*'
-      tooltip = f' title="Clang {status} implements {proposed_resolution} resolution"'
+      avail = 'Not resolved'
+      details = f'Clang {status} implements {proposed_resolution} resolution'
   elif status == 'yes':
     if not proposed_resolution:
       avail = 'Yes'
       avail_style = 'full'
     else:
-      avail = 'Not Resolved*'
-      tooltip = f' title="Clang implements {proposed_resolution} resolution"'
+      avail = 'Not resolved'
+      details = f'Clang implements {proposed_resolution} resolution'
   elif status == 'partial':
     if not proposed_resolution:
       avail = 'Partial'
       avail_style = 'partial'
     else:
-      avail = 'Not Resolved*'
-      tooltip = f' title="Clang partially implements {proposed_resolution} resolution"'
+      avail = 'Not resolved'
+      details = f'Clang partially implements {proposed_resolution} resolution'
   elif status == 'no':
     if not proposed_resolution:
       avail = 'No'
       avail_style = 'none'
     else:
-      avail = 'Not Resolved*'
-      tooltip = f' title="Clang does not implement {proposed_resolution} resolution"'
+      avail = 'Not resolved'
+      details = f'Clang does not implement {proposed_resolution} resolution'
   elif status == 'na':
     avail = 'N/A'
     avail_style = 'na'
@@ -231,7 +231,7 @@ def availability(issue):
     _, avail_style, _, _ = availability(dup)
   else:
     raise AvailabilityError('Unknown status %s for issue %s' % (status, dr.issue))
-  return (avail + avail_suffix, avail_style, unresolved_status, tooltip)
+  return (avail + avail_suffix, avail_style, unresolved_status, details)
 
 count = {}
 for dr in drs:
@@ -248,7 +248,7 @@ for dr in drs:
   elif dr.status in ('open', 'drafting', 'review', 'tentatively ready', 'ready'):
     row_style = ' class="open"'
     try:
-      avail, avail_style, unresolved_status, tooltip = availability(dr.issue)
+      avail, avail_style, unresolved_status, details = availability(dr.issue)
     except AvailabilityError as e:
       availability_error_occurred = True
       print(e.args[0])
@@ -266,7 +266,7 @@ for dr in drs:
   else:
     row_style = ''
     try:
-      avail, avail_style, unresolved_status, tooltip = availability(dr.issue)
+      avail, avail_style, unresolved_status, details = availability(dr.issue)
     except AvailabilityError as e:
       availability_error_occurred = True
       print(e.args[0])
@@ -283,13 +283,20 @@ for dr in drs:
 
   if avail_style != '':
     avail_style = ' class="{}"'.format(avail_style)
-  out_file.write('''
-  <tr%s id="%s">
-    <td><a href="https://cplusplus.github.io/CWG/issues/%s.html">%s</a></td>
-    <td>%s</td>
-    <td>%s</td>
-    <td%s%s align="center">%s</td>
-  </tr>''' % (row_style, dr.issue, dr.issue, dr.issue, dr.status, dr.title, avail_style, tooltip, avail))
+
+  if details != '':
+    avail = f'''
+      <details>
+        <summary>{avail}</summary>
+        {details}
+      </details>'''
+  out_file.write(f'''
+  <tr{row_style} id="{dr.issue}">
+    <td><a href="https://cplusplus.github.io/CWG/issues/{dr.issue}.html">{dr.issue}</a></td>
+    <td>{dr.status}</td>
+    <td>{dr.title}</td>
+    <td{avail_style} align="center">{avail}</td>
+  </tr>''')
 
 if availability_error_occurred:
   exit(1)

Copy link
Collaborator

@AaronBallman AaronBallman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@Endilll Endilll merged commit fc39cc1 into llvm:main Aug 28, 2024
11 checks passed
@Endilll Endilll deleted the dr-status-design branch August 28, 2024 13:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang Clang issues not falling into any other category documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants