14eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose#ifdef AS_SYSTEM 24eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose#pragma clang system_header 34eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose 44eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rosenamespace system { 54eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose class A { 64eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose public: 74eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose A() { 84eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose foo(); // no-warning 94eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose } 104eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose 114eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose virtual int foo(); 124eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose }; 134eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose} 144eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose 154eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose#else 164eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose 174eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rosenamespace header { 184eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose class A { 194eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose public: 204eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose A() { 214eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose foo(); // expected-warning{{Call virtual functions during construction or destruction will never go to a more derived class}} 224eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose } 234eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose 244eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose virtual int foo(); 254eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose }; 264eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose} 274eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose 284eff6b5d6a5cbb6bd669854a84365aa61d70819eJordan Rose#endif 29