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