| // RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code |
| |
| void test1() { |
| { ; { ;;}} ;; |
| } |
| |
| void test2() { |
| if (0) { if (1) {} } else { } |
| |
| do { } while (0); |
| |
| while (0) while(0) do ; while(0); |
| |
| for ((void)0;0;(void)0) |
| for (;;) |
| for ((void)9;0;(void)2) |
| ; |
| for (int X = 0; 0; (void)0); |
| } |
| |
| void test3() { |
| switch (0) { |
| |
| case 4: |
| if (0) { |
| case 6: ; |
| } |
| default: |
| ; |
| } |
| } |
| |
| void test4() { |
| if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}} |
| |
| int X; // declaration in a block. |
| |
| foo: if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}} |
| } |
| |
| typedef int t; |
| void test5() { |
| if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}} |
| |
| t x = 0; |
| |
| if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}} |
| } |
| |
| |
| void test6(void) { |
| do |
| . // expected-error {{expected expression}} |
| while (0); |
| } |
| |
| int test7() { |
| return 4 // expected-error {{expected ';' after return statement}} |
| } |
| |
| void test8() { |
| // Should not skip '}' and produce a "expected '}'" error. |
| undecl // expected-error {{use of undeclared identifier 'undecl'}} |
| } |
| |
| int test9() { |
| int T[] = {1, 2, }; |
| |
| int X; |
| X = 0, // expected-error {{expected ';' after expression}} |
| { |
| } |
| |
| X = 0, // expected-error {{expected ';' after expression}} |
| if (0) |
| ; |
| |
| return 4, // expected-error {{expected ';' after return statement}} |
| } |