1 | // RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code |
2 | |
3 | void test1() { |
4 | { ; { ;;}} ;; |
5 | } |
6 | |
7 | void test2() { |
8 | if (0) { if (1) {} } else { } |
9 | |
10 | do { } while (0); |
11 | |
12 | while (0) while(0) do ; while(0); |
13 | |
14 | for ((void)0;0;(void)0) |
15 | for (;;) |
16 | for ((void)9;0;(void)2) |
17 | ; |
18 | for (int X = 0; 0; (void)0); |
19 | } |
20 | |
21 | void test3() { |
22 | switch (0) { |
23 | |
24 | case 4: |
25 | if (0) { |
26 | case 6: ; |
27 | } |
28 | default: |
29 | ; |
30 | } |
31 | } |
32 | |
33 | void test4() { |
34 | if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}} |
35 | |
36 | int X; // declaration in a block. |
37 | |
38 | foo: if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}} |
39 | } |
40 | |
41 | typedef int t; |
42 | void test5() { |
43 | if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}} |
44 | |
45 | t x = 0; |
46 | |
47 | if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}} |
48 | } |
49 | |
50 | |
51 | void test6(void) { |
52 | do |
53 | . // expected-error {{expected expression}} |
54 | while (0); |
55 | } |
56 | |
57 | int test7() { |
58 | return 4 // expected-error {{expected ';' after return statement}} |
59 | } |
60 | |
61 | void test8() { |
62 | // Should not skip '}' and produce a "expected '}'" error. |
63 | undecl // expected-error {{use of undeclared identifier 'undecl'}} |
64 | } |
65 | |
66 | int test9() { |
67 | int T[] = {1, 2, }; |
68 | |
69 | int X; |
70 | X = 0, // expected-error {{expected ';' after expression}} |
71 | { |
72 | } |
73 | |
74 | X = 0, // expected-error {{expected ';' after expression}} |
75 | if (0) |
76 | ; |
77 | |
78 | return 4, // expected-error {{expected ';' after return statement}} |
79 | } |
80 | |