xref: /llvm-project/clang/test/Parser/pragma-weak.c (revision 426a47bddb7962c1d1e1c9cb8e3b6807aa619e91)
18fbe78f6SDaniel Dunbar // RUN: %clang_cc1 -fsyntax-only -verify %s
28df7462fSEli Friedman 
38df7462fSEli Friedman // Note that this puts the expected lines before the directives to work around
48df7462fSEli Friedman // limitations in the -verify mode.
58df7462fSEli Friedman 
68df7462fSEli Friedman int x;
78df7462fSEli Friedman /* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak
88df7462fSEli Friedman #pragma weak x
98df7462fSEli Friedman 
103c1291d3SEli Friedman extern int z;
118df7462fSEli Friedman /* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z = =
128df7462fSEli Friedman /* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z =
137d470f34SRyan Flynn /* expected-warning {{weak identifier 'y' never declared}} */ #pragma weak z = y
148df7462fSEli Friedman 
153c1291d3SEli Friedman extern int a;
168df7462fSEli Friedman /* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a b
178df7462fSEli Friedman /* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a = x c
18*426a47bdSRichard Smith 
19*426a47bdSRichard Smith 
pragma_is_not_a_statement(int x)20*426a47bdSRichard Smith void pragma_is_not_a_statement(int x)
21*426a47bdSRichard Smith {
22*426a47bdSRichard Smith   int t;
23*426a47bdSRichard Smith 
24*426a47bdSRichard Smith   {
25*426a47bdSRichard Smith     if (x)
26*426a47bdSRichard Smith #pragma weak t
27*426a47bdSRichard Smith     else // expected-error {{expected expression}}
28*426a47bdSRichard Smith #pragma weak t
29*426a47bdSRichard Smith   }
30*426a47bdSRichard Smith 
31*426a47bdSRichard Smith   switch (x) {
32*426a47bdSRichard Smith     case 1:
33*426a47bdSRichard Smith #pragma weak t
34*426a47bdSRichard Smith   } // expected-error {{expected statement}}
35*426a47bdSRichard Smith   switch(x) {
36*426a47bdSRichard Smith     default:
37*426a47bdSRichard Smith #pragma weak t
38*426a47bdSRichard Smith   } // expected-error {{expected statement}}
39*426a47bdSRichard Smith 
40*426a47bdSRichard Smith label:
41*426a47bdSRichard Smith #pragma weak t
42*426a47bdSRichard Smith } // expected-error {{expected statement}}
43*426a47bdSRichard Smith 
44*426a47bdSRichard Smith 
45