[clang] [clang] Minor updates to C++ DR page design (PR #106360)
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 28 03:45:46 PDT 2024
https://github.com/Endilll created https://github.com/llvm/llvm-project/pull/106360
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](https://github.com/user-attachments/assets/54852d7b-5fdd-4595-8dca-20628797f952)
I also took an opportunity to fix spelling inconsistency pointed out by @zygoloid in https://github.com/llvm/llvm-project/pull/106299#discussion_r1733592539.
I got tired of counting `%s`s 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.
>From f49c19a8f306baf59fadad7b16cdff105bba4536 Mon Sep 17 00:00:00 2001
From: Vlad Serebrennikov <serebrennikov.vladislav at gmail.com>
Date: Wed, 28 Aug 2024 13:37:28 +0300
Subject: [PATCH] [clang] Minor updates to C++ DR page design
---
clang/www/cxx_dr_status.html | 72 ++++++++++++++++++++++++++++++------
clang/www/make_cxx_dr_status | 45 ++++++++++++----------
2 files changed, 86 insertions(+), 31 deletions(-)
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)
More information about the cfe-commits
mailing list