1*67e74705SXin Li #ifdef AS_SYSTEM 2*67e74705SXin Li #pragma clang system_header 3*67e74705SXin Li 4*67e74705SXin Li namespace system { 5*67e74705SXin Li class A { 6*67e74705SXin Li public: A()7*67e74705SXin Li A() { 8*67e74705SXin Li foo(); // no-warning 9*67e74705SXin Li } 10*67e74705SXin Li 11*67e74705SXin Li virtual int foo(); 12*67e74705SXin Li }; 13*67e74705SXin Li } 14*67e74705SXin Li 15*67e74705SXin Li #else 16*67e74705SXin Li 17*67e74705SXin Li namespace header { 18*67e74705SXin Li class A { 19*67e74705SXin Li public: A()20*67e74705SXin Li A() { 21*67e74705SXin Li foo(); // expected-warning{{Call virtual functions during construction or destruction will never go to a more derived class}} 22*67e74705SXin Li } 23*67e74705SXin Li 24*67e74705SXin Li virtual int foo(); 25*67e74705SXin Li }; 26*67e74705SXin Li } 27*67e74705SXin Li 28*67e74705SXin Li #endif 29