Skip to content

Commit

Permalink
[clang][NFC] Fill in historical data on when C++ DRs 300-399 were fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
Endilll committed Dec 3, 2023
1 parent c890582 commit 599cba3
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 36 deletions.
37 changes: 19 additions & 18 deletions clang/test/CXX/drs/dr3xx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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'}}
Expand Down Expand Up @@ -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}}

Expand Down Expand Up @@ -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 {};
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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}}
Expand All @@ -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];
}
Expand Down Expand Up @@ -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}}
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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 {};
Expand Down Expand Up @@ -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'}}
Expand Down Expand Up @@ -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(); };
Expand Down Expand Up @@ -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(); } };
Expand All @@ -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}}
Expand Down Expand Up @@ -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}}
Expand All @@ -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();
Expand All @@ -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 +{{}}
Expand Down
36 changes: 18 additions & 18 deletions clang/www/cxx_dr_status.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -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>
Expand All @@ -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>
Expand All @@ -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>
Expand Down Expand Up @@ -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>
Expand All @@ -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>&amp;</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>
Expand All @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand All @@ -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>
Expand All @@ -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>
Expand All @@ -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>
Expand Down

0 comments on commit 599cba3

Please sign in to comment.