Skip to content

Commit bf2e05c

Browse files
committed
[clang][NFC] Fill in historical data on when C++ DR 1-99 were fixed
1 parent c6d7072 commit bf2e05c

File tree

2 files changed

+46
-48
lines changed

2 files changed

+46
-48
lines changed

clang/test/CXX/drs/dr0xx.cpp

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ namespace dr4 { // dr4: yes
6464
}
6565
}
6666

67-
namespace dr5 { // dr5: yes
67+
namespace dr5 { // dr5: 3.1
6868
struct A {} a;
6969
struct B {
7070
B(const A&);
@@ -78,7 +78,7 @@ namespace dr5 { // dr5: yes
7878
const C c = e;
7979
}
8080

81-
namespace dr7 { // dr7: yes
81+
namespace dr7 { // dr7: 3.4
8282
class A { public: ~A(); };
8383
class B : virtual private A {}; // expected-note 2 {{declared private here}}
8484
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
114114
A::T<A::U, A::k, &A::f> *A::g() { return 0; }
115115
}
116116

117-
namespace dr9 { // dr9: yes
117+
namespace dr9 { // dr9: 2.8
118118
struct B {
119119
protected:
120120
int m; // expected-note {{here}}
@@ -175,7 +175,7 @@ namespace dr13 { // dr13: no
175175
int a4 = h(g);
176176
}
177177

178-
namespace dr14 { // dr14: yes
178+
namespace dr14 { // dr14: 3.4
179179
namespace X { extern "C" int dr14_f(); }
180180
namespace Y { extern "C" int dr14_f(); }
181181
using namespace X;
@@ -201,7 +201,7 @@ namespace dr15 { // dr15: yes
201201
template<typename T> void f(int = 0); // expected-error {{default arguments cannot be added}}
202202
}
203203

204-
namespace dr16 { // dr16: yes
204+
namespace dr16 { // dr16: 2.8
205205
class A { // expected-note {{here}}
206206
void f(); // expected-note {{here}}
207207
friend class C;
@@ -230,7 +230,7 @@ namespace dr17 { // dr17: yes
230230

231231
// dr18: sup 577
232232

233-
namespace dr19 { // dr19: yes
233+
namespace dr19 { // dr19: 3.1
234234
struct A {
235235
int n; // expected-note {{here}}
236236
};
@@ -243,7 +243,7 @@ namespace dr19 { // dr19: yes
243243
};
244244
}
245245

246-
namespace dr20 { // dr20: yes
246+
namespace dr20 { // dr20: 2.8
247247
class X {
248248
public:
249249
X();
@@ -254,7 +254,7 @@ namespace dr20 { // dr20: yes
254254
X x = f(); // expected-error {{private}}
255255
}
256256

257-
namespace dr21 { // dr21: yes
257+
namespace dr21 { // dr21: 3.4
258258
template<typename T> struct A;
259259
struct X {
260260
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
398398
#endif
399399
}
400400

401-
namespace dr31 { // dr31: yes
401+
namespace dr31 { // dr31: 2.8
402402
class X {
403403
private:
404404
void operator delete(void*); // expected-note {{here}}
@@ -410,7 +410,7 @@ namespace dr31 { // dr31: yes
410410

411411
// dr32: na
412412

413-
namespace dr33 { // dr33: yes
413+
namespace dr33 { // dr33: 9
414414
namespace X { struct S; void f(void (*)(S)); } // expected-note {{candidate}}
415415
namespace Y { struct T; void f(void (*)(T)); } // expected-note {{candidate}}
416416
void g(X::S);
@@ -667,7 +667,7 @@ namespace dr48 { // dr48: yes
667667
const int &c = S::o;
668668
}
669669

670-
namespace dr49 { // dr49: yes
670+
namespace dr49 { // dr49: 2.8
671671
template<int*> struct A {}; // expected-note 0-2{{here}}
672672
int k;
673673
#if __has_feature(cxx_constexpr)
@@ -703,7 +703,7 @@ namespace dr50 { // dr50: yes
703703
X *u = dynamic_cast<X*>(p); // expected-error {{incomplete}}
704704
}
705705

706-
namespace dr51 { // dr51: yes
706+
namespace dr51 { // dr51: 2.8
707707
struct A {};
708708
struct B : A {};
709709
struct S {
@@ -713,9 +713,7 @@ namespace dr51 { // dr51: yes
713713
A &a = s;
714714
}
715715

716-
namespace dr52 { // dr52: yes
717-
struct A { int n; }; // expected-note {{here}}
718-
struct B : private A {} b; // expected-note 2{{private}}
716+
namespace dr52 { // dr52: 2.8
719717
// FIXME: This first diagnostic is very strangely worded, and seems to be bogus.
720718
int k = b.A::n; // expected-error {{'A' is a private member of 'dr52::A'}}
721719
// expected-error@-1 {{cannot cast 'struct B' to its private base}}
@@ -726,7 +724,7 @@ namespace dr53 { // dr53: yes
726724
enum E { e } x = static_cast<E>(n);
727725
}
728726

729-
namespace dr54 { // dr54: yes
727+
namespace dr54 { // dr54: 2.8
730728
struct A { int a; } a;
731729
struct V { int v; } v;
732730
struct B : private A, virtual V { int b; } b; // expected-note 6{{private here}}
@@ -777,7 +775,7 @@ namespace dr56 { // dr56: yes
777775
};
778776
}
779777

780-
namespace dr58 { // dr58: yes
778+
namespace dr58 { // dr58: 3.1
781779
// FIXME: Ideally, we should have a CodeGen test for this.
782780
#if __cplusplus >= 201103L
783781
enum E1 { E1_0 = 0, E1_1 = 1 };
@@ -834,7 +832,7 @@ namespace dr60 { // dr60: yes
834832
int &n = f(k);
835833
}
836834

837-
namespace dr61 { // dr61: yes
835+
namespace dr61 { // dr61: 3.4
838836
struct X {
839837
static void f();
840838
} x;
@@ -849,7 +847,7 @@ namespace dr61 { // dr61: yes
849847
void (*r)() = y.f; // expected-error {{cannot create a non-constant pointer to member function}}
850848
}
851849

852-
namespace dr62 { // dr62: yes
850+
namespace dr62 { // dr62: 2.9
853851
struct A {
854852
struct { int n; } b;
855853
};
@@ -937,7 +935,7 @@ namespace dr66 { // dr66: no
937935

938936
// dr67: na
939937

940-
namespace dr68 { // dr68: yes
938+
namespace dr68 { // dr68: 2.8
941939
template<typename T> struct X {};
942940
struct ::dr68::X<int> x1;
943941
struct ::dr68::template X<int> x2;
@@ -962,7 +960,7 @@ namespace dr68 { // dr68: yes
962960
};
963961
}
964962

965-
namespace dr69 { // dr69: yes
963+
namespace dr69 { // dr69: 9
966964
template<typename T> static void f() {} // #dr69-f
967965
// FIXME: Should we warn here?
968966
inline void g() { f<int>(); }
@@ -1026,7 +1024,7 @@ namespace dr78 { // dr78: sup ????
10261024

10271025
// dr79: na
10281026

1029-
namespace dr80 { // dr80: yes
1027+
namespace dr80 { // dr80: 2.9
10301028
struct A {
10311029
int A;
10321030
};
@@ -1070,7 +1068,7 @@ namespace dr84 { // dr84: yes
10701068
#endif
10711069
}
10721070

1073-
namespace dr85 { // dr85: yes
1071+
namespace dr85 { // dr85: 3.4
10741072
struct A {
10751073
struct B;
10761074
struct B {}; // expected-note{{previous declaration is here}}
@@ -1109,7 +1107,7 @@ namespace dr87 { // dr87: no
11091107
X<void(void() throw())> y;
11101108
}
11111109

1112-
namespace dr88 { // dr88: yes
1110+
namespace dr88 { // dr88: 2.8
11131111
template<typename T> struct S {
11141112
static const int a = 1; // expected-note {{previous}}
11151113
static const int b;
@@ -1197,7 +1195,7 @@ namespace dr94 { // dr94: yes
11971195
int arr[A::n];
11981196
}
11991197

1200-
namespace dr95 { // dr95: yes
1198+
namespace dr95 { // dr95: 3.3
12011199
struct A;
12021200
struct B;
12031201
namespace N {

0 commit comments

Comments
 (0)