1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li // Note that this puts the expected lines before the directives to work around 4*67e74705SXin Li // limitations in the -verify mode. 5*67e74705SXin Li 6*67e74705SXin Li int x; 7*67e74705SXin Li /* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak 8*67e74705SXin Li #pragma weak x 9*67e74705SXin Li 10*67e74705SXin Li extern int z; 11*67e74705SXin Li /* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z = = 12*67e74705SXin Li /* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z = 13*67e74705SXin Li /* expected-warning {{weak identifier 'y' never declared}} */ #pragma weak z = y 14*67e74705SXin Li 15*67e74705SXin Li extern int a; 16*67e74705SXin Li /* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a b 17*67e74705SXin Li /* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a = x c 18*67e74705SXin Li 19*67e74705SXin Li pragma_is_not_a_statement(int x)20*67e74705SXin Livoid pragma_is_not_a_statement(int x) 21*67e74705SXin Li { 22*67e74705SXin Li int t; 23*67e74705SXin Li 24*67e74705SXin Li { 25*67e74705SXin Li if (x) 26*67e74705SXin Li #pragma weak t 27*67e74705SXin Li else // expected-error {{expected expression}} 28*67e74705SXin Li #pragma weak t 29*67e74705SXin Li } 30*67e74705SXin Li 31*67e74705SXin Li switch (x) { 32*67e74705SXin Li case 1: 33*67e74705SXin Li #pragma weak t 34*67e74705SXin Li } // expected-error {{expected statement}} 35*67e74705SXin Li switch(x) { 36*67e74705SXin Li default: 37*67e74705SXin Li #pragma weak t 38*67e74705SXin Li } // expected-error {{expected statement}} 39*67e74705SXin Li 40*67e74705SXin Li label: 41*67e74705SXin Li #pragma weak t 42*67e74705SXin Li } // expected-error {{expected statement}} 43*67e74705SXin Li 44*67e74705SXin Li 45