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