Imported Upstream version 2.9.0
[debian/cc1111] / support / valdiag / tests / switch.c
1
2 char x;
3
4 /* Valid switch statement */
5 #ifdef TEST1
6 char foo(void)
7 {
8   switch(x)
9     {
10       char y;
11       
12       case 0:
13         return 0;
14       case 1:
15         return 1;
16       default:
17         y = x+1;
18         return y;
19     }
20 }
21 #endif
22
23 /* Error, duplicate cases */
24 #ifdef TEST2
25 char foo(void)
26 {
27   switch(x)
28     {
29       char y;
30       
31       case 0:           /* IGNORE */
32         return 0;
33       case 1:
34         return 1;
35       case 0:           /* ERROR */
36         return 0;
37       default:
38         y = x;
39         return y;
40     }
41 }
42 #endif
43
44 /* Error, more than one default */
45 #ifdef TEST3
46 char foo(void)
47 {
48   switch(x)
49     {
50       char y;
51       
52       case 0:
53         return 0;
54       case 1:
55         return 1;
56       default:          /* IGNORE */
57         y = x;
58         return y;
59       default:          /* ERROR */
60         return 2;
61     }
62 }
63 #endif
64
65 /* Warn about unreachable code */
66 #ifdef TEST4
67 char foo(void)
68 {
69   switch(x)
70     {
71       char y;
72       x++;              /* WARNING(SDCC) */
73       
74       case 0:
75         return 0;
76       case 1:
77         return 1;
78       default:
79         y = x;
80         return x;
81     }
82 }
83 #endif
84
85 /* Warn about unreachable initializer */
86 #ifdef TEST5
87 char foo(void)
88 {
89   switch(x)
90     {
91       char y=1;         /* WARNING(SDCC) */
92       
93       case 0:
94         return 0;
95       case 1:
96         return 1;
97       default:
98         return y;       /* IGNORE */
99     }
100 }
101 #endif
102
103 /* Error, missing switch */
104 #ifdef TEST6
105 char foo(void)
106 {
107     {
108       case 0:           /* ERROR */
109         return 0;
110       case 1:           /* ERROR */
111         return 1;
112       default:          /* ERROR */
113         return x;
114     }
115 }
116 #endif
117
118 /* Error, switch condition must be integral */
119 #ifdef TEST7
120 char foo(void)
121 {
122   float f;
123   f=x;
124   switch(f)             /* ERROR */
125     {
126       char y;
127       
128       case 0:
129         return 0;
130       case 1:
131         return 1;
132       default:
133         y = x;
134         return x;
135     }
136   return 0;
137 }
138 #endif
139
140 /* Error, cases must be integral */
141 #ifdef TEST8
142 char foo(void)
143 {
144   switch(x)
145     {
146       char y;
147       
148       case 0.0:         /* ERROR */
149         return 0;
150       case 1:
151         return 1;
152       default:
153         y = x;
154         return x;
155     }
156 }
157 #endif
158