Skip to content

Commit

Permalink
[clang] Use cwg_index.html from GitHub for DR status page (#90352)
Browse files Browse the repository at this point in the history
Currently we're using official publication of CWG issue list available
at https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_index.html.
Unfortunately, it's not updated as frequently as we sometimes need. For
instance, recently there was a confusion during review of CWG2149 test
(#90079 (comment)).
This patch changes our `make_cxx_dr_status` script to use issue list
from CWG GitHub repository. I confirmed with CWG chair that this is the
most up-to-date source of information on CWG issues.

Changing the source of issue list uncovered previously unhandled
"tentatively ready" status of an issue. This status is considered
unresolved by the script (like `open`, `drafting`, and `review`), as the
resolution might change during face-to-face CWG meeting.

I also noticed that CWG decided to handle 2561 differently from what
we're doing, so this DR is now considered not available in Clang,
despite being declared as available since 18. CC @cor3ntin.

This patch also brings new issues into our DR list, so if someone was
waiting for a newly-filed issue to appear on our status page, it should
appear with this PR.
  • Loading branch information
Endilll authored Apr 29, 2024
1 parent f2452d4 commit 37f2928
Show file tree
Hide file tree
Showing 8 changed files with 410 additions and 165 deletions.
2 changes: 1 addition & 1 deletion clang/test/CXX/drs/cwg2149.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion clang/test/CXX/drs/dr20xx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ namespace cwg2026 { // cwg2026: 11
}
}

namespace cwg2049 { // cwg2049: 18 drafting P2308R1
namespace cwg2049 { // cwg2049: 18
#if __cplusplus >= 202302L
template <int* x = {}> struct X {};
X<> a;
Expand Down
2 changes: 2 additions & 0 deletions clang/test/CXX/drs/dr21xx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,8 @@ void foo() {
}
}

// cwg2149 is in cwg2149.cpp

namespace cwg2157 { // cwg2157: 11
#if __cplusplus >= 201103L
enum E : int;
Expand Down
4 changes: 2 additions & 2 deletions clang/test/CXX/drs/dr24xx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 <S s>
Expand All @@ -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) {}
Expand Down
4 changes: 3 additions & 1 deletion clang/test/CXX/drs/dr25xx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion clang/test/CXX/drs/dr28xx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
// expected-no-diagnostics
#endif

namespace cwg2847 { // cwg2847: 19
namespace cwg2847 { // cwg2847: 19 review 2024-03-01

#if __cplusplus >= 202002L

Expand Down
Loading

0 comments on commit 37f2928

Please sign in to comment.