msg_101.c revision 1.5 1 /* $NetBSD: msg_101.c,v 1.5 2021/06/30 14:02:11 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 /* FIXME: "type 'int'" is wrong. */
21 /* expect+1: error: type 'int' does not have member 'z' [101] */
22 sink(ptr->z);
23 /* FIXME: "type 'int'" is wrong. */
24 /* expect+1: error: type 'int' does not have member 'z' [101] */
25 sink(pt.z);
26
27 /* mixed up '.' and '->' */
28 /* TODO: mention actual type in the diagnostic */
29 /* expect+1: error: left operand of '.' must be struct/union object [103] */
30 sink(ptr.x);
31 /* TODO: put actual type in 'quotes' */
32 /* expect+1: error: left operand of '->' must be pointer to struct/union not struct point [104] */
33 sink(pt->x);
34
35 /* accessing a nonexistent member via the wrong operator */
36 /* FIXME: "type 'int'" is wrong. */
37 /* expect+1: error: type 'int' does not have member 'z' [101] */
38 sink(ptr.z);
39 /* FIXME: "type 'int'" is wrong. */
40 /* expect+1: error: type 'int' does not have member 'z' [101] */
41 sink(pt->z);
42 }
43