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