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