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 | |
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 | |