1*1f5207b7SJohn Levon #include "check_debug.h"
2*1f5207b7SJohn Levon 
3*1f5207b7SJohn Levon int a, b;
4*1f5207b7SJohn Levon 
5*1f5207b7SJohn Levon int frob(void);
6*1f5207b7SJohn Levon 
test(int size)7*1f5207b7SJohn Levon int test(int size)
8*1f5207b7SJohn Levon {
9*1f5207b7SJohn Levon 	a = 0;
10*1f5207b7SJohn Levon 
11*1f5207b7SJohn Levon 	if (({switch (frob()) {
12*1f5207b7SJohn Levon 		case 1:
13*1f5207b7SJohn Levon 			a = 2;
14*1f5207b7SJohn Levon 			break;
15*1f5207b7SJohn Levon 		default:
16*1f5207b7SJohn Levon 			a = 3;
17*1f5207b7SJohn Levon 	     }
18*1f5207b7SJohn Levon 	     b;}))
19*1f5207b7SJohn Levon 		;
20*1f5207b7SJohn Levon 	__smatch_implied(a);
21*1f5207b7SJohn Levon 
22*1f5207b7SJohn Levon 	a = 4;
23*1f5207b7SJohn Levon 
24*1f5207b7SJohn Levon 	if (({switch (2) {
25*1f5207b7SJohn Levon 		case 1:
26*1f5207b7SJohn Levon 			a = 5;
27*1f5207b7SJohn Levon 			break;
28*1f5207b7SJohn Levon 		case 2:
29*1f5207b7SJohn Levon 			a = 6;
30*1f5207b7SJohn Levon 			break;
31*1f5207b7SJohn Levon 		default:
32*1f5207b7SJohn Levon 			a = 7;
33*1f5207b7SJohn Levon 	     }
34*1f5207b7SJohn Levon 	     b;}))
35*1f5207b7SJohn Levon 		;
36*1f5207b7SJohn Levon 	__smatch_implied(a);
37*1f5207b7SJohn Levon 
38*1f5207b7SJohn Levon 	return 0;
39*1f5207b7SJohn Levon }
40*1f5207b7SJohn Levon 
41*1f5207b7SJohn Levon /*
42*1f5207b7SJohn Levon  * check-name: smatch: switch #3
43*1f5207b7SJohn Levon  * check-command: smatch -I.. sm_switch3.c
44*1f5207b7SJohn Levon  *
45*1f5207b7SJohn Levon  * check-output-start
46*1f5207b7SJohn Levon sm_switch3.c:20 test() implied: a = '2-3'
47*1f5207b7SJohn Levon sm_switch3.c:36 test() implied: a = '6'
48*1f5207b7SJohn Levon  * check-output-end
49*1f5207b7SJohn Levon  */
50