[clang] 599cba3 - [clang][NFC] Fill in historical data on when C++ DRs 300-399 were fixed
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 3 05:49:00 PST 2023
Author: Vlad Serebrennikov
Date: 2023-12-03T16:48:53+03:00
New Revision: 599cba3e7c82f046f247aa1cae4948dbbdcb7cb3
URL: https://github.com/llvm/llvm-project/commit/599cba3e7c82f046f247aa1cae4948dbbdcb7cb3
DIFF: https://github.com/llvm/llvm-project/commit/599cba3e7c82f046f247aa1cae4948dbbdcb7cb3.diff
LOG: [clang][NFC] Fill in historical data on when C++ DRs 300-399 were fixed
Added:
Modified:
clang/test/CXX/drs/dr3xx.cpp
clang/www/cxx_dr_status.html
Removed:
################################################################################
diff --git a/clang/test/CXX/drs/dr3xx.cpp b/clang/test/CXX/drs/dr3xx.cpp
index aebb33fdd583c..d12e0aea5f5ac 100644
--- a/clang/test/CXX/drs/dr3xx.cpp
+++ b/clang/test/CXX/drs/dr3xx.cpp
@@ -11,7 +11,7 @@ namespace dr300 { // dr300: yes
void h() { f(g); }
}
-namespace dr301 { // dr301: yes
+namespace dr301 { // dr301: 3.5
// see also dr38
struct S;
template<typename T> void operator+(T, T);
@@ -42,7 +42,7 @@ namespace dr301 { // dr301: yes
template<typename T> class S::operator&<T*> {}; // expected-error +{{}}
}
-namespace dr302 { // dr302: yes
+namespace dr302 { // dr302: 3.0
struct A { A(); ~A(); };
#if __cplusplus < 201103L
struct B { // expected-error {{implicit default constructor for 'dr302::B' must explicitly initialize the const member 'n'}}
@@ -70,7 +70,7 @@ namespace dr302 { // dr302: yes
// dr303: na
-namespace dr304 { // dr304: yes
+namespace dr304 { // dr304: 2.9
typedef int &a;
int n = a(); // expected-error {{requires an initializer}}
@@ -154,7 +154,7 @@ namespace dr306 { // dr306: dup 39
// dr307: na
-namespace dr308 { // dr308: yes
+namespace dr308 { // dr308: 3.7
// This is mostly an ABI library issue.
struct A {};
struct B : A {};
@@ -182,7 +182,7 @@ namespace dr308 { // dr308: yes
// dr309: dup 485
-namespace dr311 { // dr311: yes
+namespace dr311 { // dr311: 3.0
namespace X { namespace Y {} }
namespace X::Y {}
#if __cplusplus <= 201402L
@@ -317,7 +317,7 @@ namespace dr321 { // dr321: dup 557
bool x = i == j;
}
-namespace dr322 { // dr322: yes
+namespace dr322 { // dr322: 2.8
struct A {
template<typename T> operator T&();
} a;
@@ -327,7 +327,7 @@ namespace dr322 { // dr322: yes
// dr323: no
-namespace dr324 { // dr324: yes
+namespace dr324 { // dr324: 3.6
struct S { int n : 1; } s; // expected-note 3{{bit-field is declared here}}
int &a = s.n; // expected-error {{non-const reference cannot bind to bit-field}}
int *b = &s.n; // expected-error {{address of bit-field}}
@@ -340,7 +340,7 @@ namespace dr324 { // dr324: yes
int *i = &++s.n; // expected-error {{address of bit-field}}
}
-namespace dr326 { // dr326: yes
+namespace dr326 { // dr326: 3.1
struct S {};
int test[__is_trivially_constructible(S, const S&) ? 1 : -1];
}
@@ -457,7 +457,7 @@ namespace dr330 { // dr330: 7
}
}
-namespace dr331 { // dr331: yes
+namespace dr331 { // dr331: 11
struct A {
A(volatile A&); // expected-note 2{{candidate}}
} const a, b(a); // expected-error 2{{no matching constructor}}
@@ -535,7 +535,7 @@ namespace dr337 { // dr337: yes
struct B { virtual ~B() = 0; };
}
-namespace dr339 { // dr339: yes
+namespace dr339 { // dr339: 2.8
template <int I> struct A { static const int value = I; };
char xxx(int);
@@ -675,7 +675,7 @@ namespace dr349 { // dr349: no
// dr351: na
-namespace dr352 { // dr352: yes
+namespace dr352 { // dr352: 2.8
namespace example1 {
namespace A {
enum E {};
@@ -963,7 +963,7 @@ namespace dr367 { // dr367: yes
#endif
}
-namespace dr368 { // dr368: yes
+namespace dr368 { // dr368: 3.6
template<typename T, T> struct S {}; // expected-note {{here}}
template<typename T> int f(S<T, T()> *); // expected-error {{function type}}
template<typename T> int g(S<T, (T())> *); // cxx98_17-note {{type 'X'}}
@@ -1079,7 +1079,8 @@ namespace dr373 { // dr373: 5
using namespace A::B; // expected-error {{expected namespace name}}
}
-namespace dr374 { // dr374: yes
+namespace dr374 { // dr374: 7
+ // NB 2.9 c++11
namespace N {
template<typename T> void f();
template<typename T> struct A { void f(); };
@@ -1161,7 +1162,7 @@ namespace dr384 { // dr384: yes
}
}
-namespace dr385 { // dr385: yes
+namespace dr385 { // dr385: 2.8
struct A { protected: void f(); };
struct B : A { using A::f; };
struct C : A { void g(B b) { b.f(); } };
@@ -1173,7 +1174,7 @@ namespace dr385 { // dr385: yes
int i(E e) { return e.n; } // expected-error {{protected member}}
}
-namespace dr387 { // dr387: yes
+namespace dr387 { // dr387: 2.8
namespace old {
template<typename T> class number {
number(int); // expected-note 2{{here}}
@@ -1316,7 +1317,7 @@ namespace dr389 { // dr389: no
}
}
-namespace dr390 { // dr390: yes
+namespace dr390 { // dr390: 3.3
template<typename T>
struct A {
A() { f(); } // expected-warning {{call to pure virt}}
@@ -1330,7 +1331,7 @@ namespace dr390 { // dr390: yes
} b;
}
-namespace dr391 { // dr391: yes c++11
+namespace dr391 { // dr391: 2.8 c++11
// FIXME: Should this apply to C++98 too?
class A { A(const A&); }; // expected-note 0-1{{here}}
A fa();
@@ -1357,7 +1358,7 @@ namespace dr391 { // dr391: yes c++11
// dr392 FIXME write codegen test
// dr394: na
-namespace dr395 { // dr395: yes
+namespace dr395 { // dr395: 3.0
struct S {
template <typename T, int N>(&operator T())[N]; // expected-error {{cannot specify any part of a return type}}
template <typename T, int N> operator(T (&)[N])(); // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error +{{}}
diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index e0e7fe14e3e1f..2b757df8f3df9 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -1845,13 +1845,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/301.html">301</a></td>
<td>CD1</td>
<td>Syntax for <I>template-name</I></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="302">
<td><a href="https://cplusplus.github.io/CWG/issues/302.html">302</a></td>
<td>CD1</td>
<td>Value-initialization and generation of default constructor</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="303">
<td><a href="https://cplusplus.github.io/CWG/issues/303.html">303</a></td>
@@ -1863,7 +1863,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/304.html">304</a></td>
<td>TC1</td>
<td>Value-initialization of a reference</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="305">
<td><a href="https://cplusplus.github.io/CWG/issues/305.html">305</a></td>
@@ -1887,7 +1887,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/308.html">308</a></td>
<td>NAD</td>
<td>Catching exceptions with ambiguous base classes</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="309">
<td><a href="https://cplusplus.github.io/CWG/issues/309.html">309</a></td>
@@ -1905,7 +1905,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/311.html">311</a></td>
<td>NAD</td>
<td>Using qualified name to reopen nested namespace</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="312">
<td><a href="https://cplusplus.github.io/CWG/issues/312.html">312</a></td>
@@ -1971,7 +1971,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/322.html">322</a></td>
<td>CD1</td>
<td>Deduction of reference conversions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="323">
<td><a href="https://cplusplus.github.io/CWG/issues/323.html">323</a></td>
@@ -1983,7 +1983,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/324.html">324</a></td>
<td>CD1</td>
<td>Can "<TT>&</TT>" be applied to assignment to bit-field?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.6</td>
</tr>
<tr class="open" id="325">
<td><a href="https://cplusplus.github.io/CWG/issues/325.html">325</a></td>
@@ -1995,7 +1995,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/326.html">326</a></td>
<td>CD1</td>
<td>Wording for definition of trivial constructor</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="327">
<td><a href="https://cplusplus.github.io/CWG/issues/327.html">327</a></td>
@@ -2025,7 +2025,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/331.html">331</a></td>
<td>CD1</td>
<td>Allowed copy constructor signatures</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 11</td>
</tr>
<tr id="332">
<td><a href="https://cplusplus.github.io/CWG/issues/332.html">332</a></td>
@@ -2073,7 +2073,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/339.html">339</a></td>
<td>CD1</td>
<td>Overload resolution in operand of <TT>sizeof</TT> in constant expression</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="340">
<td><a href="https://cplusplus.github.io/CWG/issues/340.html">340</a></td>
@@ -2151,7 +2151,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/352.html">352</a></td>
<td>CD1</td>
<td>Nondeduced contexts</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="353">
<td><a href="https://cplusplus.github.io/CWG/issues/353.html">353</a></td>
@@ -2247,7 +2247,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/368.html">368</a></td>
<td>CD1</td>
<td>Uses of non-type parameters that should cause deduction to fail</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.6</td>
</tr>
<tr class="open" id="369">
<td><a href="https://cplusplus.github.io/CWG/issues/369.html">369</a></td>
@@ -2283,7 +2283,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/374.html">374</a></td>
<td>CD2</td>
<td>Can explicit specialization outside namespace use qualified name?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 7</td>
</tr>
<tr id="375">
<td><a href="https://cplusplus.github.io/CWG/issues/375.html">375</a></td>
@@ -2349,7 +2349,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/385.html">385</a></td>
<td>CD1</td>
<td>How does protected member check of 11.5 interact with using-declarations?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="386">
<td><a href="https://cplusplus.github.io/CWG/issues/386.html">386</a></td>
@@ -2361,7 +2361,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/387.html">387</a></td>
<td>CD1</td>
<td>Errors in example in 14.6.5</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="388">
<td><a href="https://cplusplus.github.io/CWG/issues/388.html">388</a></td>
@@ -2379,13 +2379,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/390.html">390</a></td>
<td>CD1</td>
<td>Pure virtual must be defined when implicitly called</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="391">
<td><a href="https://cplusplus.github.io/CWG/issues/391.html">391</a></td>
<td>CD1</td>
<td>Require direct binding of short-lived references to rvalues</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 2.8 (C++11 onwards)</td>
</tr>
<tr id="392">
<td><a href="https://cplusplus.github.io/CWG/issues/392.html">392</a></td>
@@ -2409,7 +2409,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/395.html">395</a></td>
<td>NAD</td>
<td>Conversion operator template syntax</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="396">
<td><a href="https://cplusplus.github.io/CWG/issues/396.html">396</a></td>
More information about the cfe-commits
mailing list