[clang] bf2e05c - [clang][NFC] Fill in historical data on when C++ DR 1-99 were fixed

Vlad Serebrennikov via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 29 15:25:22 PST 2023


Author: Vlad Serebrennikov
Date: 2023-11-30T02:25:15+03:00
New Revision: bf2e05c7fbc739cd9b9086163303f846ee2806d2

URL: https://github.com/llvm/llvm-project/commit/bf2e05c7fbc739cd9b9086163303f846ee2806d2
DIFF: https://github.com/llvm/llvm-project/commit/bf2e05c7fbc739cd9b9086163303f846ee2806d2.diff

LOG: [clang][NFC] Fill in historical data on when C++ DR 1-99 were fixed

Added: 
    

Modified: 
    clang/test/CXX/drs/dr0xx.cpp
    clang/www/cxx_dr_status.html

Removed: 
    


################################################################################
diff  --git a/clang/test/CXX/drs/dr0xx.cpp b/clang/test/CXX/drs/dr0xx.cpp
index 5a127ff4f4164e1..1210c7a834e5970 100644
--- a/clang/test/CXX/drs/dr0xx.cpp
+++ b/clang/test/CXX/drs/dr0xx.cpp
@@ -64,7 +64,7 @@ namespace dr4 { // dr4: yes
   }
 }
 
-namespace dr5 { // dr5: yes
+namespace dr5 { // dr5: 3.1
   struct A {} a;
   struct B {
     B(const A&);
@@ -78,7 +78,7 @@ namespace dr5 { // dr5: yes
   const C c = e;
 }
 
-namespace dr7 { // dr7: yes
+namespace dr7 { // dr7: 3.4
   class A { public: ~A(); };
   class B : virtual private A {}; // expected-note 2 {{declared private here}}
   class C : public B {} c; // expected-error 2 {{inherited virtual base class 'A' has private destructor}} \
@@ -114,7 +114,7 @@ namespace dr8 { // dr8: dup 45
   A::T<A::U, A::k, &A::f> *A::g() { return 0; }
 }
 
-namespace dr9 { // dr9: yes
+namespace dr9 { // dr9: 2.8
   struct B {
   protected:
     int m; // expected-note {{here}}
@@ -175,7 +175,7 @@ namespace dr13 { // dr13: no
   int a4 = h(g);
 }
 
-namespace dr14 { // dr14: yes
+namespace dr14 { // dr14: 3.4
   namespace X { extern "C" int dr14_f(); }
   namespace Y { extern "C" int dr14_f(); }
   using namespace X;
@@ -201,7 +201,7 @@ namespace dr15 { // dr15: yes
   template<typename T> void f(int = 0); // expected-error {{default arguments cannot be added}}
 }
 
-namespace dr16 { // dr16: yes
+namespace dr16 { // dr16: 2.8
   class A { // expected-note {{here}}
     void f(); // expected-note {{here}}
     friend class C;
@@ -230,7 +230,7 @@ namespace dr17 { // dr17: yes
 
 // dr18: sup 577
 
-namespace dr19 { // dr19: yes
+namespace dr19 { // dr19: 3.1
   struct A {
     int n; // expected-note {{here}}
   };
@@ -243,7 +243,7 @@ namespace dr19 { // dr19: yes
   };
 }
 
-namespace dr20 { // dr20: yes
+namespace dr20 { // dr20: 2.8
   class X {
   public:
     X();
@@ -254,7 +254,7 @@ namespace dr20 { // dr20: yes
   X x = f(); // expected-error {{private}}
 }
 
-namespace dr21 { // dr21: yes
+namespace dr21 { // dr21: 3.4
   template<typename T> struct A;
   struct X {
     template<typename T = int> friend struct A; // expected-error {{default template argument not permitted on a friend template}}
@@ -398,7 +398,7 @@ namespace dr30 { // dr30: sup 468 c++11
 #endif
 }
 
-namespace dr31 { // dr31: yes
+namespace dr31 { // dr31: 2.8
   class X {
   private:
     void operator delete(void*); // expected-note {{here}}
@@ -410,7 +410,7 @@ namespace dr31 { // dr31: yes
 
 // dr32: na
 
-namespace dr33 { // dr33: yes
+namespace dr33 { // dr33: 9
   namespace X { struct S; void f(void (*)(S)); } // expected-note {{candidate}}
   namespace Y { struct T; void f(void (*)(T)); } // expected-note {{candidate}}
   void g(X::S);
@@ -667,7 +667,7 @@ namespace dr48 { // dr48: yes
   const int &c = S::o;
 }
 
-namespace dr49 { // dr49: yes
+namespace dr49 { // dr49: 2.8
   template<int*> struct A {}; // expected-note 0-2{{here}}
   int k;
 #if __has_feature(cxx_constexpr)
@@ -703,7 +703,7 @@ namespace dr50 { // dr50: yes
   X *u = dynamic_cast<X*>(p); // expected-error {{incomplete}}
 }
 
-namespace dr51 { // dr51: yes
+namespace dr51 { // dr51: 2.8
   struct A {};
   struct B : A {};
   struct S {
@@ -713,9 +713,7 @@ namespace dr51 { // dr51: yes
   A &a = s;
 }
 
-namespace dr52 { // dr52: yes
-  struct A { int n; }; // expected-note {{here}}
-  struct B : private A {} b; // expected-note 2{{private}}
+namespace dr52 { // dr52: 2.8
   // FIXME: This first diagnostic is very strangely worded, and seems to be bogus.
   int k = b.A::n; // expected-error {{'A' is a private member of 'dr52::A'}}
   // expected-error at -1 {{cannot cast 'struct B' to its private base}}
@@ -726,7 +724,7 @@ namespace dr53 { // dr53: yes
   enum E { e } x = static_cast<E>(n);
 }
 
-namespace dr54 { // dr54: yes
+namespace dr54 { // dr54: 2.8
   struct A { int a; } a;
   struct V { int v; } v;
   struct B : private A, virtual V { int b; } b; // expected-note 6{{private here}}
@@ -777,7 +775,7 @@ namespace dr56 { // dr56: yes
   };
 }
 
-namespace dr58 { // dr58: yes
+namespace dr58 { // dr58: 3.1
   // FIXME: Ideally, we should have a CodeGen test for this.
 #if __cplusplus >= 201103L
   enum E1 { E1_0 = 0, E1_1 = 1 };
@@ -834,7 +832,7 @@ namespace dr60 { // dr60: yes
   int &n = f(k);
 }
 
-namespace dr61 { // dr61: yes
+namespace dr61 { // dr61: 3.4
   struct X {
     static void f();
   } x;
@@ -849,7 +847,7 @@ namespace dr61 { // dr61: yes
   void (*r)() = y.f; // expected-error {{cannot create a non-constant pointer to member function}}
 }
 
-namespace dr62 { // dr62: yes
+namespace dr62 { // dr62: 2.9
   struct A {
     struct { int n; } b;
   };
@@ -937,7 +935,7 @@ namespace dr66 { // dr66: no
 
 // dr67: na
 
-namespace dr68 { // dr68: yes
+namespace dr68 { // dr68: 2.8
   template<typename T> struct X {};
   struct ::dr68::X<int> x1;
   struct ::dr68::template X<int> x2;
@@ -962,7 +960,7 @@ namespace dr68 { // dr68: yes
   };
 }
 
-namespace dr69 { // dr69: yes
+namespace dr69 { // dr69: 9
   template<typename T> static void f() {} // #dr69-f
   // FIXME: Should we warn here?
   inline void g() { f<int>(); }
@@ -1026,7 +1024,7 @@ namespace dr78 { // dr78: sup ????
 
 // dr79: na
 
-namespace dr80 { // dr80: yes
+namespace dr80 { // dr80: 2.9
   struct A {
     int A;
   };
@@ -1070,7 +1068,7 @@ namespace dr84 { // dr84: yes
 #endif
 }
 
-namespace dr85 { // dr85: yes
+namespace dr85 { // dr85: 3.4
   struct A {
     struct B;
     struct B {}; // expected-note{{previous declaration is here}}
@@ -1109,7 +1107,7 @@ namespace dr87 { // dr87: no
   X<void(void() throw())> y;
 }
 
-namespace dr88 { // dr88: yes
+namespace dr88 { // dr88: 2.8
   template<typename T> struct S {
     static const int a = 1; // expected-note {{previous}}
     static const int b;
@@ -1197,7 +1195,7 @@ namespace dr94 { // dr94: yes
   int arr[A::n];
 }
 
-namespace dr95 { // dr95: yes
+namespace dr95 { // dr95: 3.3
   struct A;
   struct B;
   namespace N {

diff  --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index 266891a2e373090..7cf657a47d64093 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -67,7 +67,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/5.html">5</a></td>
     <td>CD1</td>
     <td>CV-qualifiers and type conversions</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.1</td>
   </tr>
   <tr id="6">
     <td><a href="https://cplusplus.github.io/CWG/issues/6.html">6</a></td>
@@ -79,7 +79,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/7.html">7</a></td>
     <td>NAD</td>
     <td>Can a class with a private virtual base class be derived from?</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.4</td>
   </tr>
   <tr id="8">
     <td><a href="https://cplusplus.github.io/CWG/issues/8.html">8</a></td>
@@ -91,7 +91,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/9.html">9</a></td>
     <td>CD1</td>
     <td>Clarification of access to base class members</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="10">
     <td><a href="https://cplusplus.github.io/CWG/issues/10.html">10</a></td>
@@ -121,7 +121,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/14.html">14</a></td>
     <td>NAD</td>
     <td>extern "C" functions and declarations in 
diff erent namespaces</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.4</td>
   </tr>
   <tr id="15">
     <td><a href="https://cplusplus.github.io/CWG/issues/15.html">15</a></td>
@@ -133,7 +133,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/16.html">16</a></td>
     <td>CD1</td>
     <td>Access to members of indirect private base classes</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="17">
     <td><a href="https://cplusplus.github.io/CWG/issues/17.html">17</a></td>
@@ -151,19 +151,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/19.html">19</a></td>
     <td>NAD</td>
     <td>Clarify protected member access</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.1</td>
   </tr>
   <tr id="20">
     <td><a href="https://cplusplus.github.io/CWG/issues/20.html">20</a></td>
     <td>TC1</td>
     <td>Some clarifications needed for 12.8 para 15</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="21">
     <td><a href="https://cplusplus.github.io/CWG/issues/21.html">21</a></td>
     <td>TC1</td>
     <td>Can a default argument for a template parameter appear in a friend declaration?</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.4</td>
   </tr>
   <tr id="22">
     <td><a href="https://cplusplus.github.io/CWG/issues/22.html">22</a></td>
@@ -223,7 +223,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/31.html">31</a></td>
     <td>NAD</td>
     <td>Looking up new/delete</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="32">
     <td><a href="https://cplusplus.github.io/CWG/issues/32.html">32</a></td>
@@ -235,7 +235,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/33.html">33</a></td>
     <td>TC1</td>
     <td>Argument dependent lookup and overloaded functions</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 9</td>
   </tr>
   <tr id="34">
     <td><a href="https://cplusplus.github.io/CWG/issues/34.html">34</a></td>
@@ -331,7 +331,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/49.html">49</a></td>
     <td>TC1</td>
     <td>Restriction on non-type, non-value template arguments</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="50">
     <td><a href="https://cplusplus.github.io/CWG/issues/50.html">50</a></td>
@@ -343,13 +343,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/51.html">51</a></td>
     <td>TC1</td>
     <td>Overloading and user-defined conversions</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="52">
     <td><a href="https://cplusplus.github.io/CWG/issues/52.html">52</a></td>
     <td>TC1</td>
     <td>Non-static members, member selection and access checking</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="53">
     <td><a href="https://cplusplus.github.io/CWG/issues/53.html">53</a></td>
@@ -361,7 +361,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/54.html">54</a></td>
     <td>CD1</td>
     <td>Static_cast from private base to derived class</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="55">
     <td><a href="https://cplusplus.github.io/CWG/issues/55.html">55</a></td>
@@ -385,7 +385,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/58.html">58</a></td>
     <td>CD1</td>
     <td>Signedness of bit fields of enum type</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.1</td>
   </tr>
   <tr id="59">
     <td><a href="https://cplusplus.github.io/CWG/issues/59.html">59</a></td>
@@ -403,13 +403,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/61.html">61</a></td>
     <td>NAD</td>
     <td>Address of static member function "<TT>&p->f</TT>"</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.4</td>
   </tr>
   <tr id="62">
     <td><a href="https://cplusplus.github.io/CWG/issues/62.html">62</a></td>
     <td>CD1</td>
     <td>Unnamed members of classes used as type parameters</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.9</td>
   </tr>
   <tr id="63">
     <td><a href="https://cplusplus.github.io/CWG/issues/63.html">63</a></td>
@@ -445,13 +445,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/68.html">68</a></td>
     <td>TC1</td>
     <td>Grammar does not allow "friend class A<int>;"</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="69">
     <td><a href="https://cplusplus.github.io/CWG/issues/69.html">69</a></td>
     <td>TC1</td>
     <td>Storage class specifiers on template declarations</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 9</td>
   </tr>
   <tr id="70">
     <td><a href="https://cplusplus.github.io/CWG/issues/70.html">70</a></td>
@@ -517,7 +517,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/80.html">80</a></td>
     <td>TC1</td>
     <td>Class members with same name as class</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.9</td>
   </tr>
   <tr id="81">
     <td><a href="https://cplusplus.github.io/CWG/issues/81.html">81</a></td>
@@ -547,7 +547,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/85.html">85</a></td>
     <td>TC1</td>
     <td>Redeclaration of member class</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.4</td>
   </tr>
   <tr id="86">
     <td><a href="https://cplusplus.github.io/CWG/issues/86.html">86</a></td>
@@ -565,7 +565,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/88.html">88</a></td>
     <td>NAD</td>
     <td>Specialization of member constant templates</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 2.8</td>
   </tr>
   <tr id="89">
     <td><a href="https://cplusplus.github.io/CWG/issues/89.html">89</a></td>
@@ -607,7 +607,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/95.html">95</a></td>
     <td>NAD</td>
     <td>Elaborated type specifiers referencing names declared in friend decls</td>
-    <td class="full" align="center">Yes</td>
+    <td class="full" align="center">Clang 3.3</td>
   </tr>
   <tr id="96">
     <td><a href="https://cplusplus.github.io/CWG/issues/96.html">96</a></td>


        


More information about the cfe-commits mailing list