Home | History | Annotate | Line # | Download | only in lint1
      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
     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