aboutsummaryrefslogtreecommitdiff
path: root/clang/test/CXX/drs/dr0xx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/CXX/drs/dr0xx.cpp')
-rw-r--r--clang/test/CXX/drs/dr0xx.cpp48
1 files changed, 23 insertions, 25 deletions
diff --git a/clang/test/CXX/drs/dr0xx.cpp b/clang/test/CXX/drs/dr0xx.cpp
index 5a127ff..1210c7a 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@-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 {