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:  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.vladis...@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) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits