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