From bae40b1e7a894481227978df011e552a78484036 Mon Sep 17 00:00:00 2001 From: Vlad Serebrennikov Date: Sat, 27 Apr 2024 21:16:07 +0300 Subject: [PATCH] [clang] Use `cwg_index.html` from GitHub for DR status page --- clang/test/CXX/drs/cwg2149.cpp | 2 +- clang/test/CXX/drs/dr20xx.cpp | 2 +- clang/test/CXX/drs/dr21xx.cpp | 2 + clang/test/CXX/drs/dr24xx.cpp | 4 +- clang/test/CXX/drs/dr25xx.cpp | 4 +- clang/test/CXX/drs/dr28xx.cpp | 2 +- clang/www/cxx_dr_status.html | 553 +++++++++++++++++++++++---------- clang/www/make_cxx_dr_status | 6 +- 8 files changed, 410 insertions(+), 165 deletions(-) diff --git a/clang/test/CXX/drs/cwg2149.cpp b/clang/test/CXX/drs/cwg2149.cpp index d0f8cb2dfc0a9..8416e42cbd697 100644 --- a/clang/test/CXX/drs/cwg2149.cpp +++ b/clang/test/CXX/drs/cwg2149.cpp @@ -11,7 +11,7 @@ // cxx98-error@-1 {{variadic macros are a C99 feature}} #endif -namespace cwg2149 { // cwg2149: 3.1 drafting 2024-04 +namespace cwg2149 { // cwg2149: 3.1 #if __cplusplus <= 201103L struct X { int i, j, k; }; #else diff --git a/clang/test/CXX/drs/dr20xx.cpp b/clang/test/CXX/drs/dr20xx.cpp index 291a77e0cc71d..9797097acce75 100644 --- a/clang/test/CXX/drs/dr20xx.cpp +++ b/clang/test/CXX/drs/dr20xx.cpp @@ -90,7 +90,7 @@ namespace cwg2026 { // cwg2026: 11 } } -namespace cwg2049 { // cwg2049: 18 drafting P2308R1 +namespace cwg2049 { // cwg2049: 18 #if __cplusplus >= 202302L template struct X {}; X<> a; diff --git a/clang/test/CXX/drs/dr21xx.cpp b/clang/test/CXX/drs/dr21xx.cpp index 4fab10c279aa4..082deb42e4fa0 100644 --- a/clang/test/CXX/drs/dr21xx.cpp +++ b/clang/test/CXX/drs/dr21xx.cpp @@ -175,6 +175,8 @@ void foo() { } } +// cwg2149 is in cwg2149.cpp + namespace cwg2157 { // cwg2157: 11 #if __cplusplus >= 201103L enum E : int; diff --git a/clang/test/CXX/drs/dr24xx.cpp b/clang/test/CXX/drs/dr24xx.cpp index 5ffaebda68c13..9f876cd870834 100644 --- a/clang/test/CXX/drs/dr24xx.cpp +++ b/clang/test/CXX/drs/dr24xx.cpp @@ -45,7 +45,7 @@ void fallthrough(int n) { #endif } -namespace cwg2450 { // cwg2450: 18 review P2308R1 +namespace cwg2450 { // cwg2450: 18 #if __cplusplus >= 202302L struct S {int a;}; template @@ -59,7 +59,7 @@ f<{.a= 0}>(); #endif } -namespace cwg2459 { // cwg2459: 18 drafting P2308R1 +namespace cwg2459 { // cwg2459: 18 #if __cplusplus >= 202302L struct A { constexpr A(float) {} diff --git a/clang/test/CXX/drs/dr25xx.cpp b/clang/test/CXX/drs/dr25xx.cpp index 62b2a0a088cc1..481ae09cdb77e 100644 --- a/clang/test/CXX/drs/dr25xx.cpp +++ b/clang/test/CXX/drs/dr25xx.cpp @@ -130,12 +130,14 @@ struct D3 : B { #endif #if __cplusplus >= 202302L -namespace cwg2561 { // cwg2561: 18 review 2023-11-09 +namespace cwg2561 { // cwg2561: no struct C { constexpr C(auto) { } }; void foo() { constexpr auto b = [](this C) { return 1; }; + // FIXME: closure type shouldn't have a conversion function to function + // pointer, because explicit object parameter is present. constexpr int (*fp)(C) = b; static_assert(fp(1) == 1); static_assert((&decltype(b)::operator())(1) == 1); diff --git a/clang/test/CXX/drs/dr28xx.cpp b/clang/test/CXX/drs/dr28xx.cpp index 4d9b0c76758d5..1967e8b751db2 100644 --- a/clang/test/CXX/drs/dr28xx.cpp +++ b/clang/test/CXX/drs/dr28xx.cpp @@ -10,7 +10,7 @@ // expected-no-diagnostics #endif -namespace cwg2847 { // cwg2847: 19 +namespace cwg2847 { // cwg2847: 19 review 2024-03-01 #if __cplusplus >= 202002L diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html index ea8872c91be60..19d29cb55d6ed 100755 --- a/clang/www/cxx_dr_status.html +++ b/clang/www/cxx_dr_status.html @@ -1433,11 +1433,11 @@

C++ defect report implementation status

Is indirection through a null pointer undefined behavior? Unknown - + 233 - drafting + tentatively ready References vs pointers in UDC overload resolution - Not resolved + Unknown 234 @@ -2756,7 +2756,7 @@

C++ defect report implementation status

453 - tentatively ready + DR References may only bind to “valid” objects Unknown @@ -5812,7 +5812,7 @@

C++ defect report implementation status

1001 - drafting + review Parameter type adjustment in dependent parameter types Not resolved @@ -6034,7 +6034,7 @@

C++ defect report implementation status

1038 - DR + DRWP Overload resolution of &x.static_func Unknown @@ -9994,7 +9994,7 @@

C++ defect report implementation status

1698 - DR + DRWP Files ending in \ Unknown @@ -10132,7 +10132,7 @@

C++ defect report implementation status

1721 - drafting + review Diagnosing ODR violations for static data members Not resolved @@ -11312,11 +11312,11 @@

C++ defect report implementation status

decltype-qualified enumeration names Unknown - + 1918 - open + CD5 friend templates with dependent scopes - Not resolved + Unknown 1919 @@ -11474,11 +11474,11 @@

C++ defect report implementation status

New C incompatibilities Not resolved - + 1945 - open + CD5 Friend declarations naming members of class templates in non-templates - Not resolved + Unknown 1946 @@ -11530,7 +11530,7 @@

C++ defect report implementation status

1954 - tentatively ready + DR typeid null dereference check in subexpressions Unknown @@ -12098,11 +12098,11 @@

C++ defect report implementation status

C-style casts that cast away constness vs static_cast Not resolved - + 2049 - drafting + DRWP List initializer in non-type template default argument - Not Resolved* + Clang 18 2050 @@ -12130,7 +12130,7 @@

C++ defect report implementation status

2054 - DR + DRWP Missing description of class SFINAE Unknown @@ -12418,7 +12418,7 @@

C++ defect report implementation status

2102 - DR + DRWP Constructor checking in new-expression Unknown @@ -12698,11 +12698,11 @@

C++ defect report implementation status

Thread storage duration and order of initialization Not resolved - + 2149 - drafting + DR Brace elision and array length deduction - Not Resolved* + Clang 3.1 2150 @@ -13318,7 +13318,7 @@

C++ defect report implementation status

2252 - DR + DRWP Enumeration list-initialization from the same type Unknown @@ -14410,7 +14410,7 @@

C++ defect report implementation status

2434 - open + review Mandatory copy elision vs non-class objects Not resolved @@ -14504,11 +14504,11 @@

C++ defect report implementation status

Thunks as an implementation technique for pointers to virtual functions Extension - + 2450 - review + DRWP braced-init-list as a template-argument - Not Resolved* + Clang 18 2451 @@ -14558,11 +14558,11 @@

C++ defect report implementation status

Value category of expressions denoting non-static member functions Unknown - + 2459 - drafting + DRWP Template parameter initialization - Not Resolved* + Clang 18 2460 @@ -14662,7 +14662,7 @@

C++ defect report implementation status

2476 - tentatively ready + DR placeholder-type-specifiers and function declarators Unknown @@ -14830,7 +14830,7 @@

C++ defect report implementation status

2504 - DR + DRWP Inheriting constructors from virtual base classes No @@ -14992,7 +14992,7 @@

C++ defect report implementation status

2531 - DR + DRWP Static data members redeclared as constexpr Unknown @@ -15002,11 +15002,11 @@

C++ defect report implementation status

Kind of pointer value returned by new T[0] Not resolved - + 2533 - review + DR Storage duration of implicitly created objects - Not resolved + Unknown 2534 @@ -15082,13 +15082,13 @@

C++ defect report implementation status

2546 - tentatively ready + DR Defaulted secondary comparison operators defined as deleted Unknown 2547 - tentatively ready + DR Defaulted comparison operator function for non-classes Unknown @@ -15142,7 +15142,7 @@

C++ defect report implementation status

2556 - DR + DRWP Unusable promise::return_void Unknown @@ -15166,15 +15166,15 @@

C++ defect report implementation status

2560 - tentatively ready + DR Parameter type determination in a requirement-parameter-list Unknown - + 2561 - review + tentatively ready Conversion to function pointer for lambda with explicit object parameter - Not Resolved* + No 2562 @@ -15214,7 +15214,7 @@

C++ defect report implementation status

2568 - tentatively ready + DR Access checking during synthesis of defaulted comparison operator Unknown @@ -15226,7 +15226,7 @@

C++ defect report implementation status

2570 - DR + DRWP Clarify constexpr for defaulted functions Unknown @@ -15332,11 +15332,11 @@

C++ defect report implementation status

Visible side effects and initial value of an object Not resolved - + 2588 - drafting + tentatively ready friend declarations and module linkage - Not resolved + Unknown 2589 @@ -15352,7 +15352,7 @@

C++ defect report implementation status

2591 - DR + DRWP Implicit change of active union member for anonymous union in union Unknown @@ -15376,7 +15376,7 @@

C++ defect report implementation status

2595 - DR + DRWP "More constrained" for eligible special member functions Unknown @@ -15406,7 +15406,7 @@

C++ defect report implementation status

2600 - DR + DRWP Type dependency of placeholder types Unknown @@ -15574,7 +15574,7 @@

C++ defect report implementation status

2628 - DR + DRWP Implicit deduction guides should propagate constraints No @@ -15610,7 +15610,7 @@

C++ defect report implementation status

2634 - tentatively ready + DR Avoid circularity in specification of scope for friend class declarations Unknown @@ -15628,13 +15628,13 @@

C++ defect report implementation status

2637 - tentatively ready + DR Injected-class-name as a simple-template-id Unknown 2638 - tentatively ready + DR Improve the example for initializing by initializer list Unknown @@ -15748,7 +15748,7 @@

C++ defect report implementation status

2657 - tentatively ready + DR Cv-qualification adjustment when binding reference to temporary Unknown @@ -15770,11 +15770,11 @@

C++ defect report implementation status

Confusing term "this parameter" Not resolved - + 2661 - open + DR Missing disambiguation rule for pure-specifier vs. brace-or-equal-initializer - Not resolved + Unknown 2662 @@ -15814,7 +15814,7 @@

C++ defect report implementation status

2668 - tentatively ready + DR co_await in a lambda-expression Unknown @@ -15838,7 +15838,7 @@

C++ defect report implementation status

2672 - DR + DRWP Lambda body SFINAE is still required, contrary to intent and note Clang 18 @@ -15940,7 +15940,7 @@

C++ defect report implementation status

2689 - tentatively ready + DR Are cv-qualified std::nullptr_t fundamental types? Unknown @@ -16004,11 +16004,11 @@

C++ defect report implementation status

Inconsistency of throw-expression specification Unknown - + 2700 - review + DR #error disallows existing implementation practice - Not resolved + Unknown 2701 @@ -16048,7 +16048,7 @@

C++ defect report implementation status

2707 - tentatively ready + DR Deduction guides cannot have a trailing requires-clause Unknown @@ -16088,11 +16088,11 @@

C++ defect report implementation status

Initialization of reference-to-aggregate from designated initializer list Unknown - + 2714 - open + DR Implicit deduction guides omit properties from the parameter-declaration-clause of a constructor - Not resolved + Unknown 2715 @@ -16156,7 +16156,7 @@

C++ defect report implementation status

2725 - DR + DRWP Overload resolution for non-call of class member access Unknown @@ -16172,11 +16172,11 @@

C++ defect report implementation status

Importing header units synthesized from source files Not resolved - + 2728 - open + tentatively ready Evaluation of conversions in a delete-expression - Not resolved + Unknown 2729 @@ -16204,7 +16204,7 @@

C++ defect report implementation status

2733 - DR + DRWP Applying [[maybe_unused]] to a label Unknown @@ -16228,7 +16228,7 @@

C++ defect report implementation status

2737 - open + review Temporary lifetime extension for reference init-captures Not resolved @@ -16258,7 +16258,7 @@

C++ defect report implementation status

2742 - open + drafting Guaranteed copy elision for brace-initialization from prvalue Not resolved @@ -16274,33 +16274,33 @@

C++ defect report implementation status

Multiple objects of the same type at the same address Not resolved - + 2745 - open + DR Dependent odr-use in generic lambdas - Not resolved + Unknown - + 2746 - open + DR Checking of default template arguments - Not resolved + Unknown 2747 - DR + DRWP Cannot depend on an already-deleted splice Unknown 2748 - tentatively ready + DR Accessing static data members via null pointer Unknown 2749 - DR + DRWP Treatment of "pointer to void" for relational comparisons Unknown @@ -16324,19 +16324,19 @@

C++ defect report implementation status

2753 - DR + DRWP Storage reuse for string literal objects and backing arrays Unknown 2754 - DR + DRWP Using *this in explicit object member functions that are coroutines Unknown 2755 - DR + DRWP Incorrect wording applied by P2738R1 Unknown @@ -16354,43 +16354,43 @@

C++ defect report implementation status

2758 - DR + DRWP What is "access and ambiguity control"? Unknown 2759 - DR + DRWP [[no_unique_address] and common initial sequence Clang 19 2760 - DR + DRWP Defaulted constructor that is an immediate function Unknown 2761 - DR + DRWP Implicitly invoking the deleted destructor of an anonymous union member Unknown 2762 - DR + DRWP Type of implicit object parameter Unknown 2763 - DR + DRWP Ignorability of [[noreturn]] during constant evaluation Unknown 2764 - DR + DRWP Use of placeholders affecting name mangling Unknown @@ -16403,7 +16403,8 @@

C++ defect report implementation status

2766 open - Repeated evaluation of a string-literal may yield different objects + Repeated evaluation of a string-literal may yield different +objects Not resolved @@ -16414,7 +16415,7 @@

C++ defect report implementation status

2768 - DR + DRWP Assignment to enumeration variable with a braced-init-list Unknown @@ -16430,15 +16431,15 @@

C++ defect report implementation status

Trailing requires-clause can refer to function parameters before they are substituted into Not resolved - + 2771 - open + DR Transformation for unqualified-ids in address operator - Not resolved + Unknown 2772 - DR + DRWP Missing Annex C entry for linkage effects of linkage-specification Unknown @@ -16456,7 +16457,7 @@

C++ defect report implementation status

2775 - tentatively ready + DR Unclear argument type for copy of exception object Unknown @@ -16466,15 +16467,15 @@

C++ defect report implementation status

Substitution failure and implementation limits Not resolved - + 2777 - open + DR Type of id-expression denoting a template parameter object - Not resolved + Unknown 2778 - open + review Trivial destructor does not imply constant destruction Not resolved @@ -16486,7 +16487,7 @@

C++ defect report implementation status

2780 - DR + DRWP reinterpret_cast to reference to function types Unknown @@ -16504,7 +16505,7 @@

C++ defect report implementation status

2783 - DR + DRWP Handling of deduction guides in global-module-fragment Unknown @@ -16516,7 +16517,7 @@

C++ defect report implementation status

2785 - DR + DRWP Type-dependence of requires-expression Unknown @@ -16540,7 +16541,7 @@

C++ defect report implementation status

2789 - DR + DRWP Overload resolution with implicit and explicit object member functions Clang 18 @@ -16552,19 +16553,19 @@

C++ defect report implementation status

2791 - DR + DRWP Unclear phrasing about "returning to the caller" Unknown 2792 - DR + DRWP Clean up specification of noexcept operator Unknown 2793 - DR + DRWP Block-scope declaration conflicting with parameter name Unknown @@ -16576,25 +16577,25 @@

C++ defect report implementation status

2795 - DR + DRWP Overlapping empty subobjects with different cv-qualification Unknown 2796 - DR + DRWP Function pointer conversions for relational operators Unknown 2797 - open + review Meaning of "corresponds" for rewritten operator candidates Not resolved 2798 - DR + DRWP Manifestly constant evaluation of the static_assert message Clang 17 @@ -16612,7 +16613,7 @@

C++ defect report implementation status

2801 - DR + DRWP Reference binding with reference-related types Unknown @@ -16624,7 +16625,7 @@

C++ defect report implementation status

2803 - tentatively ready + DR Overload resolution for reference binding of similar types Unknown @@ -16642,13 +16643,13 @@

C++ defect report implementation status

2806 - DR + DRWP Make a type-requirement a type-only context Unknown 2807 - DR + DRWP Destructors declared consteval Unknown @@ -16660,19 +16661,19 @@

C++ defect report implementation status

2809 - tentatively ready + DR An implicit definition does not redeclare a function Unknown 2810 - tentatively ready + DR Requiring the absence of diagnostics for templates Unknown 2811 - tentatively ready + DR Clarify "use" of main Unknown @@ -16682,11 +16683,11 @@

C++ defect report implementation status

Allocation with explicit alignment Not resolved - + 2813 - review + DR Class member access with prvalues - Not resolved + Unknown 2814 @@ -16712,59 +16713,59 @@

C++ defect report implementation status

sizeof(abstract class) is underspecified Not resolved - + 2818 - review + tentatively ready Use of predefined reserved identifiers - Not resolved + Unknown - + 2819 - review + tentatively ready Cast from null pointer value in a constant expression - Not resolved + Unknown - + 2820 - open + DR Value-initialization and default constructors - Not resolved + Unknown 2821 - open + review Lifetime, zero-initialization, and dynamic initialization Not resolved 2822 - tentatively ready + DR Side-effect-free pointer zap Unknown 2823 - DR + DRWP Implicit undefined behavior when dereferencing pointers Unknown 2824 - tentatively ready + DR Copy-initialization of arrays Unknown 2825 - tentatively ready + DR Range-based for statement using a braced-init-list Unknown - + 2826 - tentatively ready + drafting Missing definition of "temporary expression" - Unknown + Not resolved 2827 @@ -16772,11 +16773,11 @@

C++ defect report implementation status

Representation of unsigned integral types Not resolved - + 2828 - review + DR Ambiguous interpretation of C-style cast - Not resolved + Unknown 2829 @@ -16784,17 +16785,17 @@

C++ defect report implementation status

Redundant case in restricting user-defined conversion sequences Not resolved - + 2830 - open + DR Top-level cv-qualification should be ignored for list-initialization - Not resolved + Unknown - + 2831 - open + DR Non-templated function definitions and requires-clauses - Not resolved + Unknown 2832 @@ -16810,7 +16811,7 @@

C++ defect report implementation status

2834 - open + review Partial ordering and explicit object parameters Not resolved @@ -16822,7 +16823,7 @@

C++ defect report implementation status

2836 - open + review Conversion rank of long double and extended floating-point types Not resolved @@ -16855,6 +16856,246 @@

C++ defect report implementation status

open When do const objects start being const? Not resolved + + + 2842 + open + Preferring an initializer_list over a single value + Not resolved + + + 2843 + review + Undated reference to Unicode makes C++ a moving target + Not resolved + + + 2844 + open + Enumerating a finite set of built-in candidates + Not resolved + + + 2845 + DR + Make the closure type of a captureless lambda a structural type + Unknown + + + 2846 + DR + Out-of-class definitions of explicit object member functions + Unknown + + + 2847 + review + Constrained explicit specializations of function templates at class scope + Not Resolved* + + + 2848 + DR + Omitting an empty template argument list for explicit instantiation + Unknown + + + 2849 + DR + Parameter objects are not temporary objects + Unknown + + + 2850 + DR + Unclear storage duration for function parameter objects + Unknown + + + 2851 + DR + Allow floating-point conversions in converted constant expressions + Unknown + + + 2852 + open + Complete-class contexts and class-scope lambdas + Not resolved + + + 2853 + DR + Pointer arithmetic with pointer to hypothetical element + Unknown + + + 2854 + DR + Storage duration of exception objects + Unknown + + + 2855 + DR + Undefined behavior in postfix increment + Unknown + + + 2856 + DR + Copy-list-initialization with explicit default constructors + Unknown + + + 2857 + DR + Argument-dependent lookup with incomplete class types + Unknown + + + 2858 + tentatively ready + Declarative nested-name-specifiers and pack-index-specifiers + Clang 19 + + + 2859 + tentatively ready + Value-initialization with multiple default constructors + Unknown + + + 2860 + dup + Remove and fix the term "vacuous initialization" + Unknown + + + 2861 + tentatively ready + dynamic_cast on bad pointer value + Unknown + + + 2862 + tentatively ready + Unclear boundaries of template declarations + Unknown + + + 2863 + tentatively ready + Unclear synchronization requirements for object lifetime rules + Unknown + + + 2864 + tentatively ready + Narrowing floating-point conversions + Unknown + + + 2865 + open + Regression on result of conditional operator + Not resolved + + + 2866 + open + Observing the effects of [[no_unique_address]] + Not resolved + + + 2867 + open + Order of initialization for structured bindings + Not resolved + + + 2868 + open + Self-references in trivially copyable objects as function return values + Not resolved + + + 2869 + open + this in local classes + Not resolved + + + 2870 + open + Combining absent encoding-prefixes + Not resolved + + + 2871 + tentatively ready + User-declared constructor templates inhibiting default constructors + Unknown + + + 2872 + open + Linkage and unclear "can be referred to" + Not resolved + + + 2873 + open + Taking the address of a function involving template argument deduction + Not resolved + + + 2874 + open + Qualified declarations of partial specializations + Not resolved + + + 2875 + open + Missing support for round-tripping nullptr through indirection/address operators + Not resolved + + + 2876 + open + Disambiguation of T x = delete("text") + Not resolved + + + 2877 + open + Type-only lookup for using-enum-declarator + Not resolved + + + 2878 + open + C-style casts to reference types + Not resolved + + + 2879 + open + Undesired outcomes with const_cast + Not resolved + + + 2880 + open + Accessibility check for destructor of incomplete class type + Not resolved + + + 2881 + open + Type restrictions for the explicit object parameter of a lambda + Not resolved diff --git a/clang/www/make_cxx_dr_status b/clang/www/make_cxx_dr_status index 7c0cf77a1524f..57f1dc86fd125 100755 --- a/clang/www/make_cxx_dr_status +++ b/clang/www/make_cxx_dr_status @@ -5,7 +5,7 @@ latest_release = 18 clang_www_dir = os.path.dirname(__file__) default_issue_list_path = os.path.join(clang_www_dir, 'cwg_index.html') -issue_list_url = "https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_index.html" +issue_list_url = "https://raw.githubusercontent.com/cplusplus/CWG/gh-pages/issues/cwg_index.html" output = os.path.join(clang_www_dir, 'cxx_dr_status.html') dr_test_dir = os.path.join(clang_www_dir, '../test/CXX/drs') @@ -138,10 +138,10 @@ def availability(issue): unresolved_status = '' proposed_resolution = '' - unresolved_status_match = re.search(r' (open|drafting|review)', status) + unresolved_status_match = re.search(r' (open|drafting|review|tentatively ready)', status) if unresolved_status_match: unresolved_status = unresolved_status_match.group(1) - proposed_resolution_match = re.search(r' (open|drafting|review) (\d{4}-\d{2}(?:-\d{2})?|P\d{4}R\d+)$', status) + proposed_resolution_match = re.search(r' (open|drafting|review|tentatively ready) (\d{4}-\d{2}(?:-\d{2})?|P\d{4}R\d+)$', status) if proposed_resolution_match is None: raise AvailabilityError('Issue {}: \'{}\' status should be followed by a paper number (P1234R5) or proposed resolution in YYYY-MM-DD format'.format(dr.issue, unresolved_status)) proposed_resolution = proposed_resolution_match.group(2)