xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_101.c (revision 7d62b00eb9ad855ffcd7da46b41e23feb5476fac)
1 /*	$NetBSD: msg_101.c,v 1.9 2021/07/04 17:28:06 rillig Exp $	*/
2 # 3 "msg_101.c"
3 
4 // Test for message: type '%s' does not have member '%s' [101]
5 
6 struct point {
7 	int x, y;
8 };
9 
10 void sink(int);
11 
12 void
13 test(const struct point *ptr, const struct point pt)
14 {
15 	/* accessing an existing member */
16 	sink(ptr->x);
17 	sink(pt.x);
18 
19 	/* accessing a nonexistent member */
20 	/* expect+1: error: type 'pointer to const struct point' does not have member 'z' [101] */
21 	sink(ptr->z);
22 	/* expect+1: error: type 'const struct point' does not have member 'z' [101] */
23 	sink(pt.z);
24 
25 	/* mixed up '.' and '->' */
26 	/* expect+1: error: left operand of '.' must be struct or union, not 'pointer to const struct point' [103] */
27 	sink(ptr.x);
28 	/* expect+1: error: left operand of '->' must be pointer to struct or union, not 'struct point' [104] */
29 	sink(pt->x);
30 
31 	/* accessing a nonexistent member via the wrong operator */
32 	/* expect+1: error: type 'pointer to const struct point' does not have member 'z' [101] */
33 	sink(ptr.z);
34 	/* expect+1: error: type 'struct point' does not have member 'z' [101] */
35 	sink(pt->z);
36 }
37