[clang][www] Port make_cxx_dr_status script to Python3

And run it to re-generate the cxx_dr_status.html

Differential Revision: https://reviews.llvm.org/D120313
This commit is contained in:
Timm Bäder 2022-02-22 11:07:39 +01:00
parent c9592ae49b
commit 02571f86bb
2 changed files with 251 additions and 76 deletions

View File

@ -7304,11 +7304,11 @@ and <I>POD class</I></td>
<td>Updating Annex C to C99</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1249">
<tr id="1249">
<td><a href="https://wg21.link/cwg1249">1249</a></td>
<td>drafting</td>
<td>DRWP</td>
<td>Cv-qualification of nested lambda capture</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr id="1250">
<td><a href="https://wg21.link/cwg1250">1250</a></td>
@ -10006,9 +10006,9 @@ and <I>POD class</I></td>
</tr>
<tr class="open" id="1699">
<td><a href="https://wg21.link/cwg1699">1699</a></td>
<td>open</td>
<td>extension</td>
<td>Does befriending a class befriend its friends?</td>
<td align="center">Not resolved</td>
<td align="center">Extension</td>
</tr>
<tr id="1700">
<td><a href="https://wg21.link/cwg1700">1700</a></td>
@ -10154,11 +10154,11 @@ and <I>POD class</I></td>
<td>Multicharacter user-defined character literals</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1724">
<tr id="1724">
<td><a href="https://wg21.link/cwg1724">1724</a></td>
<td>drafting</td>
<td>DRWP</td>
<td>Unclear rules for deduction failure</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr id="1725">
<td><a href="https://wg21.link/cwg1725">1725</a></td>
@ -10166,11 +10166,11 @@ and <I>POD class</I></td>
<td>Trailing return type with nested function declarator</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="1726">
<tr id="1726">
<td><a href="https://wg21.link/cwg1726">1726</a></td>
<td>drafting</td>
<td>DR</td>
<td>Declarator operators and conversion function</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr id="1727">
<td><a href="https://wg21.link/cwg1727">1727</a></td>
@ -10208,11 +10208,11 @@ and <I>POD class</I></td>
<td>Defining types in <I>condition</I>s and range-based <TT>for</TT> statements</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="1733">
<tr id="1733">
<td><a href="https://wg21.link/cwg1733">1733</a></td>
<td>drafting</td>
<td>DRWP</td>
<td>Return type and value for <TT>operator=</TT> with <I>ref-qualifier</I></td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr id="1734">
<td><a href="https://wg21.link/cwg1734">1734</a></td>
@ -14154,7 +14154,7 @@ and <I>POD class</I></td>
<td><a href="https://wg21.link/cwg2390">2390</a></td>
<td>CD5</td>
<td>Is the argument of <TT>__has_cpp_attribute</TT> macro-expanded?</td>
<td class="none" align="center">Unknown</td>
<td class="full" align="center">Yes</td>
</tr>
<tr id="2391">
<td><a href="https://wg21.link/cwg2391">2391</a></td>
@ -14194,7 +14194,7 @@ and <I>POD class</I></td>
</tr>
<tr id="2397">
<td><a href="https://wg21.link/cwg2397">2397</a></td>
<td>DR</td>
<td>DRWP</td>
<td><TT>auto</TT> specifier for pointers and references to arrays</td>
<td class="none" align="center">Unknown</td>
</tr>
@ -14250,7 +14250,7 @@ and <I>POD class</I></td>
<td><a href="https://wg21.link/cwg2406">2406</a></td>
<td>CD5</td>
<td><TT>[[fallthrough]]</TT> attribute and iteration statements</td>
<td class="none" align="center">Unknown</td>
<td class="full" align="center">Yes</td>
</tr>
<tr class="open" id="2407">
<td><a href="https://wg21.link/cwg2407">2407</a></td>
@ -14500,7 +14500,7 @@ and <I>POD class</I></td>
</tr>
<tr id="2448">
<td><a href="https://wg21.link/cwg2448">2448</a></td>
<td>DR</td>
<td>DRWP</td>
<td>Cv-qualification of arithmetic types and deprecation of volatile</td>
<td class="none" align="center">Unknown</td>
</tr>
@ -14540,11 +14540,11 @@ and <I>POD class</I></td>
<td>Tail recursion and coroutine symmetric transfer</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2455">
<tr id="2455">
<td><a href="https://wg21.link/cwg2455">2455</a></td>
<td>drafting</td>
<td>WP</td>
<td>Concatenation of string literals vs translation phases 5 and 6</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2456">
<td><a href="https://wg21.link/cwg2456">2456</a></td>
@ -14560,7 +14560,7 @@ and <I>POD class</I></td>
</tr>
<tr id="2458">
<td><a href="https://wg21.link/cwg2458">2458</a></td>
<td>DR</td>
<td>DRWP</td>
<td>Value category of expressions denoting non-static member functions</td>
<td class="none" align="center">Unknown</td>
</tr>
@ -14602,13 +14602,13 @@ and <I>POD class</I></td>
</tr>
<tr id="2465">
<td><a href="https://wg21.link/cwg2465">2465</a></td>
<td>DR</td>
<td>DRWP</td>
<td>Coroutine parameters passed to a promise constructor</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr id="2466">
<td><a href="https://wg21.link/cwg2466">2466</a></td>
<td>DR</td>
<td>DRWP</td>
<td><TT>co_await</TT> should be a single evaluation</td>
<td class="none" align="center">Unknown</td>
</tr>
@ -14656,7 +14656,7 @@ and <I>POD class</I></td>
</tr>
<tr id="2474">
<td><a href="https://wg21.link/cwg2474">2474</a></td>
<td>DR</td>
<td>DRWP</td>
<td>Cv-qualification and deletion</td>
<td class="none" align="center">Unknown</td>
</tr>
@ -14674,7 +14674,7 @@ and <I>POD class</I></td>
</tr>
<tr id="2477">
<td><a href="https://wg21.link/cwg2477">2477</a></td>
<td>DR</td>
<td>DRWP</td>
<td>Defaulted vs deleted copy constructors/assignment operators</td>
<td class="none" align="center">Unknown</td>
</tr>
@ -14686,7 +14686,7 @@ and <I>POD class</I></td>
</tr>
<tr id="2479">
<td><a href="https://wg21.link/cwg2479">2479</a></td>
<td>DR</td>
<td>DRWP</td>
<td>Missing specifications for <TT>consteval</TT> and <TT>constinit</TT></td>
<td class="none" align="center">Unknown</td>
</tr>
@ -14698,15 +14698,15 @@ and <I>POD class</I></td>
</tr>
<tr id="2481">
<td><a href="https://wg21.link/cwg2481">2481</a></td>
<td>DR</td>
<td>DRWP</td>
<td>Cv-qualification of temporary to which a reference is bound</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2482">
<tr id="2482">
<td><a href="https://wg21.link/cwg2482">2482</a></td>
<td>review</td>
<td>WP</td>
<td><TT>bit_cast</TT> and indeterminate values</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2483">
<td><a href="https://wg21.link/cwg2483">2483</a></td>
@ -14714,11 +14714,11 @@ and <I>POD class</I></td>
<td>Language linkage of static member functions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2484">
<tr id="2484">
<td><a href="https://wg21.link/cwg2484">2484</a></td>
<td>open</td>
<td>DRWP</td>
<td><TT>char8_t</TT> and <TT>char16_t</TT> in integral promotions</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2485">
<td><a href="https://wg21.link/cwg2485">2485</a></td>
@ -14726,11 +14726,11 @@ and <I>POD class</I></td>
<td>Bit-fields in integral promotions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2486">
<tr id="2486">
<td><a href="https://wg21.link/cwg2486">2486</a></td>
<td>drafting</td>
<td>DRWP</td>
<td>Call to <TT>noexcept</TT> function via <TT>noexcept(false)</TT> pointer/lvalue</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2487">
<td><a href="https://wg21.link/cwg2487">2487</a></td>
@ -14738,11 +14738,11 @@ and <I>POD class</I></td>
<td>Type dependence of function-style cast to incomplete array type</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2488">
<tr class="open" id="2488">
<td><a href="https://wg21.link/cwg2488">2488</a></td>
<td>NAD</td>
<td>open</td>
<td>Overloading virtual functions and functions with trailing <I>requires-clause</I>s</td>
<td class="none" align="center">Unknown</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2489">
<td><a href="https://wg21.link/cwg2489">2489</a></td>
@ -14750,35 +14750,35 @@ and <I>POD class</I></td>
<td>Storage provided by array of <TT>char</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2490">
<tr id="2490">
<td><a href="https://wg21.link/cwg2490">2490</a></td>
<td>drafting</td>
<td>DRWP</td>
<td>Restrictions on destruction in constant expressions</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr id="2491">
<td><a href="https://wg21.link/cwg2491">2491</a></td>
<td>ready</td>
<td>DRWP</td>
<td>Export of typedef after its first declaration</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr id="2492">
<tr class="open" id="2492">
<td><a href="https://wg21.link/cwg2492">2492</a></td>
<td>NAD</td>
<td>drafting</td>
<td>Comparing user-defined conversion sequences in list-initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2493">
<td><a href="https://wg21.link/cwg2493">2493</a></td>
<td>dup</td>
<td><TT>auto</TT> as a <I>conversion-type-id</I></td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2493">
<td><a href="https://wg21.link/cwg2493">2493</a></td>
<td>open</td>
<td><TT>auto</TT> as a <I>conversion-type-id</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2494">
<tr id="2494">
<td><a href="https://wg21.link/cwg2494">2494</a></td>
<td>drafting</td>
<td>DR</td>
<td>Multiple definitions of non-odr-used entities</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2495">
<td><a href="https://wg21.link/cwg2495">2495</a></td>
@ -14788,13 +14788,13 @@ and <I>POD class</I></td>
</tr>
<tr id="2496">
<td><a href="https://wg21.link/cwg2496">2496</a></td>
<td>ready</td>
<td>DRWP</td>
<td><I>ref-qualifier</I>s and virtual overriding</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2497">
<td><a href="https://wg21.link/cwg2497">2497</a></td>
<td>open</td>
<td>drafting</td>
<td>Points of instantiation for constexpr function templates</td>
<td align="center">Not resolved</td>
</tr>
@ -14804,11 +14804,11 @@ and <I>POD class</I></td>
<td>Partial specialization failure and the immediate context</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2499">
<tr id="2499">
<td><a href="https://wg21.link/cwg2499">2499</a></td>
<td>open</td>
<td>DR</td>
<td>Inconsistency in definition of pointer-interconvertibility</td>
<td align="center">Not resolved</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2500">
<td><a href="https://wg21.link/cwg2500">2500</a></td>
@ -14822,7 +14822,180 @@ and <I>POD class</I></td>
<td>Explicit instantiation and trailing <I>requires-clause</I>s</td>
<td align="center">Not resolved</td>
</tr>
</table>
<tr id="2502">
<td><a href="https://wg21.link/cwg2502">2502</a></td>
<td>accepted</td>
<td>Unintended declaration conflicts in nested statement scopes</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2503">
<td><a href="https://wg21.link/cwg2503">2503</a></td>
<td>drafting</td>
<td>Unclear relationship among name, qualified name, and unqualified name</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2504">
<td><a href="https://wg21.link/cwg2504">2504</a></td>
<td>open</td>
<td>Inheriting constructors from virtual base classes</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2505">
<td><a href="https://wg21.link/cwg2505">2505</a></td>
<td>drafting</td>
<td>Nested unnamed namespace of inline unnamed namespace</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2506">
<td><a href="https://wg21.link/cwg2506">2506</a></td>
<td>DR</td>
<td>Structured bindings and array cv-qualifiers</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2507">
<td><a href="https://wg21.link/cwg2507">2507</a></td>
<td>review</td>
<td>Default arguments for <TT>operator[]</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2508">
<td><a href="https://wg21.link/cwg2508">2508</a></td>
<td>review</td>
<td>Restrictions on uses of template parameter names</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2509">
<td><a href="https://wg21.link/cwg2509">2509</a></td>
<td>DR</td>
<td><I>decl-specifier-seq</I> in <I>lambda-specifiers</I></td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2510">
<td><a href="https://wg21.link/cwg2510">2510</a></td>
<td>open</td>
<td><I>noexcept-specifier</I> of friend function vs class completeness</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2511">
<td><a href="https://wg21.link/cwg2511">2511</a></td>
<td>DR</td>
<td>cv-qualified bit-fields</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr id="2512">
<td><a href="https://wg21.link/cwg2512">2512</a></td>
<td>NAD</td>
<td><TT>typeid</TT> and incomplete class types</td>
<td class="none" align="center">Unknown</td>
</tr>
<tr class="open" id="2513">
<td><a href="https://wg21.link/cwg2513">2513</a></td>
<td>open</td>
<td>Ambiguity with <I>requires-clause</I> and <I>operator-function-id</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2514">
<td><a href="https://wg21.link/cwg2514">2514</a></td>
<td>open</td>
<td>Modifying const subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2515">
<td><a href="https://wg21.link/cwg2515">2515</a></td>
<td>open</td>
<td>Result of a function call</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2516">
<td><a href="https://wg21.link/cwg2516">2516</a></td>
<td>open</td>
<td>Locus of <I>enum-specifier</I> or <I>opaque-enum-declaration</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2517">
<td><a href="https://wg21.link/cwg2517">2517</a></td>
<td>open</td>
<td>Useless restriction on use of parameter in <I>constraint-expression</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2518">
<td><a href="https://wg21.link/cwg2518">2518</a></td>
<td>open</td>
<td>Conformance requirements and <TT>#error</TT>/<TT>#warning</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2519">
<td><a href="https://wg21.link/cwg2519">2519</a></td>
<td>open</td>
<td>Object representation of a bit-field</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2520">
<td><a href="https://wg21.link/cwg2520">2520</a></td>
<td>open</td>
<td>Template signature and default template arguments</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2521">
<td><a href="https://wg21.link/cwg2521">2521</a></td>
<td>open</td>
<td>User-defined literals and reserved identifiers</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2522">
<td><a href="https://wg21.link/cwg2522">2522</a></td>
<td>open</td>
<td>Removing placemarker tokens and retention of whitespace</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2523">
<td><a href="https://wg21.link/cwg2523">2523</a></td>
<td>open</td>
<td>Undefined behavior via omitted destructor call in constant expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2524">
<td><a href="https://wg21.link/cwg2524">2524</a></td>
<td>open</td>
<td>Distinguishing user-defined conversion sequences by <I>ref-qualifier</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2525">
<td><a href="https://wg21.link/cwg2525">2525</a></td>
<td>open</td>
<td>Incorrect definition of implicit conversion sequence</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2526">
<td><a href="https://wg21.link/cwg2526">2526</a></td>
<td>open</td>
<td>Relational comparison of <TT>void*</TT> pointers</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2527">
<td><a href="https://wg21.link/cwg2527">2527</a></td>
<td>open</td>
<td>Non-class potentially-overlapping objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2528">
<td><a href="https://wg21.link/cwg2528">2528</a></td>
<td>open</td>
<td>Three-way comparison and the usual arithmetic conversions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2529">
<td><a href="https://wg21.link/cwg2529">2529</a></td>
<td>open</td>
<td>Constant destruction of constexpr references</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2530">
<td><a href="https://wg21.link/cwg2530">2530</a></td>
<td>open</td>
<td>Multiple definitions of enumerators</td>
<td align="center">Not resolved</td>
</tr></table>
</div>
</body>

View File

@ -1,4 +1,4 @@
#! /usr/bin/env python
#! /usr/bin/env python3
import sys, os, re
index = 'cwg_index.html'
@ -10,7 +10,7 @@ if len(sys.argv) == 1:
elif len(sys.argv) == 2:
index = sys.argv[1]
else:
print >>sys.stderr, 'Usage: make_drs [<path to cwg_index.html>]'
print('Usage: make_drs [<path to cwg_index.html>]', file=sys.stderr)
sys.exit(1)
class DR:
@ -38,17 +38,16 @@ for test_cpp in os.listdir(dr_test_dir):
continue
test_cpp = os.path.join(dr_test_dir, test_cpp)
found_any = False;
for match in re.finditer(status_re, file(test_cpp, 'r').read()):
for match in re.finditer(status_re, open(test_cpp, 'r').read()):
status_map[int(match.group(1))] = match.group(2)
found_any = True
if not found_any:
print >> sys.stderr, "warning:%s: no '// dr123: foo' comments in this file" % test_cpp
print("warning:%s: no '// dr123: foo' comments in this file" % test_cpp, file=sys.stderr)
drs = sorted((parse(dr) for dr in file(index, 'r').read().split('<TR>')[2:]),
drs = sorted((parse(dr) for dr in open(index, 'r').read().split('<TR>')[2:]),
key = lambda dr: dr.issue)
out_file = file(output, 'w')
print >> out_file, '''\
out_file = open(output, 'w')
out_file.write('''\
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- This file is auto-generated by make_cxx_dr_status. Do not modify. -->
@ -90,7 +89,7 @@ print >> out_file, '''\
<th>Status</th>
<th>Issue title</th>
<th>Available in Clang?</th>
</tr>'''
</tr>''')
latest_release = 13
@ -143,7 +142,7 @@ def availability(issue):
try:
_, avail_style = availability(int(dup))
except:
print >>sys.stderr, "issue %s marked as sup %s" % (issue, dup)
print("issue %s marked as sup %s" % (issue, dup), file=sys.stderr)
avail_style = ' class="none"'
elif status.startswith('dup '):
dup = int(status.split(' ', 1)[1])
@ -174,20 +173,23 @@ for dr in drs:
if not avail.startswith('Sup') and not avail.startswith('Dup'):
count[avail] = count.get(avail, 0) + 1
print >> out_file, '''\
out_file.write('''
<tr%s id="%s">
<td><a href="https://wg21.link/cwg%s">%s</a></td>
<td>%s</td>
<td>%s</td>
<td%s align="center">%s</td>
</tr>''' % (row_style, dr.issue, dr.issue, dr.issue, dr.status, dr.title, avail_style, avail)
</tr>''' % (row_style, dr.issue, dr.issue, dr.issue, dr.status, dr.title, avail_style, avail))
for status, num in sorted(count.items()):
print "%s: %s" % (status, num)
print("%s: %s" % (status, num))
print >> out_file, '''\
out_file.write('''\
</table>
</div>
</body>
</html>'''
</html>
''')
out_file.close()