blob: bc7192a7b2b3295ef0c5603bd06215e75b4e6d70 [file] [log] [blame]
Mike Stump46171912010-01-23 20:12:18 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code
Reid Spencer5f016e22007-07-11 17:01:13 +00002
Mike Stumpd1969d82009-07-22 00:43:08 +00003void test1() {
Reid Spencer5f016e22007-07-11 17:01:13 +00004 { ; { ;;}} ;;
5}
6
Mike Stumpd1969d82009-07-22 00:43:08 +00007void test2() {
Reid Spencer5f016e22007-07-11 17:01:13 +00008 if (0) { if (1) {} } else { }
9
10 do { } while (0);
11
12 while (0) while(0) do ; while(0);
13
Daniel Dunbar4dabe962009-08-01 06:07:15 +000014 for ((void)0;0;(void)0)
Reid Spencer5f016e22007-07-11 17:01:13 +000015 for (;;)
Daniel Dunbar4dabe962009-08-01 06:07:15 +000016 for ((void)9;0;(void)2)
Reid Spencer5f016e22007-07-11 17:01:13 +000017 ;
Daniel Dunbar4dabe962009-08-01 06:07:15 +000018 for (int X = 0; 0; (void)0);
Reid Spencer5f016e22007-07-11 17:01:13 +000019}
20
Mike Stumpd1969d82009-07-22 00:43:08 +000021void test3() {
Reid Spencer5f016e22007-07-11 17:01:13 +000022 switch (0) {
23
24 case 4:
25 if (0) {
26 case 6: ;
27 }
28 default:
29 ;
30 }
31}
32
Mike Stumpd1969d82009-07-22 00:43:08 +000033void test4() {
Chris Lattnera668e8e2008-11-13 18:42:17 +000034 if (0); // expected-warning {{if statement has empty body}}
Reid Spencer5f016e22007-07-11 17:01:13 +000035
36 int X; // declaration in a block.
37
Chris Lattnera668e8e2008-11-13 18:42:17 +000038foo: if (0); // expected-warning {{if statement has empty body}}
Reid Spencer5f016e22007-07-11 17:01:13 +000039}
40
41typedef int t;
42void test5() {
Chris Lattnera668e8e2008-11-13 18:42:17 +000043 if (0); // expected-warning {{if statement has empty body}}
Reid Spencer5f016e22007-07-11 17:01:13 +000044
Chris Lattnera668e8e2008-11-13 18:42:17 +000045 t x = 0;
Reid Spencer5f016e22007-07-11 17:01:13 +000046
Chris Lattnera668e8e2008-11-13 18:42:17 +000047 if (0); // expected-warning {{if statement has empty body}}
Reid Spencer5f016e22007-07-11 17:01:13 +000048}
49
Chris Lattner19504402008-11-13 18:52:53 +000050
51void test6(void) {
52 do
53 . // expected-error {{expected expression}}
54 while (0);
55}
56
Chris Lattner7b3684a2009-06-14 00:23:56 +000057int test7() {
58 return 4 // expected-error {{expected ';' after return statement}}
59}
Argyrios Kyrtzidisb57c7572010-03-31 00:37:59 +000060
61void test8() {
62 // Should not skip '}' and produce a "expected '}'" error.
63 undecl // expected-error {{use of undeclared identifier 'undecl'}}
64}