]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Parser/statements.c
Update clang to r100181.
[FreeBSD/FreeBSD.git] / test / Parser / statements.c
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}}
35   
36   int X;  // declaration in a block.
37   
38 foo:  if (0); // expected-warning {{if statement has empty body}}
39 }
40
41 typedef int t;
42 void test5() {
43   if (0);   // expected-warning {{if statement has empty body}}
44
45   t x = 0;
46
47   if (0);  // expected-warning {{if statement has empty body}}
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 }