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