1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li // Derived from GNU's std::string 4*67e74705SXin Li namespace test0 { 5*67e74705SXin Li class A { 6*67e74705SXin Li struct B { 7*67e74705SXin Li unsigned long length; 8*67e74705SXin Li }; 9*67e74705SXin Li struct C : B { 10*67e74705SXin Li static const unsigned long max_length; 11*67e74705SXin Li }; 12*67e74705SXin Li }; 13*67e74705SXin Li 14*67e74705SXin Li const unsigned long A::C::max_length = sizeof(B); 15*67e74705SXin Li } 16*67e74705SXin Li 17*67e74705SXin Li // Example from the standard. 18*67e74705SXin Li namespace test1 { 19*67e74705SXin Li class E { 20*67e74705SXin Li int x; 21*67e74705SXin Li class B {}; 22*67e74705SXin Li 23*67e74705SXin Li class I { 24*67e74705SXin Li B b; 25*67e74705SXin Li int y; // expected-note {{declared private here}} f(E * p,int i)26*67e74705SXin Li void f(E* p, int i) { 27*67e74705SXin Li p->x = i; 28*67e74705SXin Li } 29*67e74705SXin Li }; 30*67e74705SXin Li g(I * p)31*67e74705SXin Li int g(I* p) { return p->y; } // expected-error {{'y' is a private member of 'test1::E::I'}} 32*67e74705SXin Li }; 33*67e74705SXin Li } 34