1*1f5207b7SJohn Levon #include "check_debug.h"
2*1f5207b7SJohn Levon 
3*1f5207b7SJohn Levon struct bar {
4*1f5207b7SJohn Levon 	int a, b, c;
5*1f5207b7SJohn Levon };
6*1f5207b7SJohn Levon 
7*1f5207b7SJohn Levon struct foo {
8*1f5207b7SJohn Levon 	struct bar bar;
9*1f5207b7SJohn Levon 	int x, y, z;
10*1f5207b7SJohn Levon };
11*1f5207b7SJohn Levon 
test(int size)12*1f5207b7SJohn Levon int test(int size)
13*1f5207b7SJohn Levon {
14*1f5207b7SJohn Levon 	struct foo foo = {
15*1f5207b7SJohn Levon 		.bar.a = 42,
16*1f5207b7SJohn Levon 		.bar.b = 43,
17*1f5207b7SJohn Levon 		-1,
18*1f5207b7SJohn Levon 	};
19*1f5207b7SJohn Levon 	__smatch_implied(foo.bar.b);
20*1f5207b7SJohn Levon 	__smatch_implied(foo.bar.c);
21*1f5207b7SJohn Levon 	__smatch_implied(foo.x);
22*1f5207b7SJohn Levon 	__smatch_implied(foo.y);
23*1f5207b7SJohn Levon 
24*1f5207b7SJohn Levon 	return 0;
25*1f5207b7SJohn Levon }
26*1f5207b7SJohn Levon 
27*1f5207b7SJohn Levon /*
28*1f5207b7SJohn Levon  * check-name: smatch: nested initializer
29*1f5207b7SJohn Levon  * check-command: smatch -I.. sm_initializer.c
30*1f5207b7SJohn Levon  *
31*1f5207b7SJohn Levon  * check-output-start
32*1f5207b7SJohn Levon sm_initializer.c:19 test() implied: foo.bar.b = '43'
33*1f5207b7SJohn Levon sm_initializer.c:20 test() implied: foo.bar.c = '0'
34*1f5207b7SJohn Levon sm_initializer.c:21 test() implied: foo.x = '(-1)'
35*1f5207b7SJohn Levon sm_initializer.c:22 test() implied: foo.y = '0'
36*1f5207b7SJohn Levon  * check-output-end
37*1f5207b7SJohn Levon  */
38