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