xref: /aosp_15_r20/external/clang/test/Parser/pragma-weak.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
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 Li void 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