Home | History | Annotate | Line # | Download | only in lint1
msg_101.c revision 1.5
      1  1.5  rillig /*	$NetBSD: msg_101.c,v 1.5 2021/06/30 14:02:11 rillig Exp $	*/
      2  1.1  rillig # 3 "msg_101.c"
      3  1.1  rillig 
      4  1.4  rillig // Test for message: type '%s' does not have member '%s' [101]
      5  1.1  rillig 
      6  1.2  rillig struct point {
      7  1.2  rillig 	int x, y;
      8  1.2  rillig };
      9  1.2  rillig 
     10  1.5  rillig void sink(int);
     11  1.5  rillig 
     12  1.5  rillig void
     13  1.5  rillig test(const struct point *ptr, const struct point pt)
     14  1.2  rillig {
     15  1.5  rillig 	/* accessing an existing member */
     16  1.5  rillig 	sink(ptr->x);
     17  1.5  rillig 	sink(pt.x);
     18  1.5  rillig 
     19  1.5  rillig 	/* accessing a nonexistent member */
     20  1.5  rillig 	/* FIXME: "type 'int'" is wrong. */
     21  1.5  rillig 	/* expect+1: error: type 'int' does not have member 'z' [101] */
     22  1.5  rillig 	sink(ptr->z);
     23  1.5  rillig 	/* FIXME: "type 'int'" is wrong. */
     24  1.5  rillig 	/* expect+1: error: type 'int' does not have member 'z' [101] */
     25  1.5  rillig 	sink(pt.z);
     26  1.5  rillig 
     27  1.5  rillig 	/* mixed up '.' and '->' */
     28  1.5  rillig 	/* TODO: mention actual type in the diagnostic */
     29  1.5  rillig 	/* expect+1: error: left operand of '.' must be struct/union object [103] */
     30  1.5  rillig 	sink(ptr.x);
     31  1.5  rillig 	/* TODO: put actual type in 'quotes' */
     32  1.5  rillig 	/* expect+1: error: left operand of '->' must be pointer to struct/union not struct point [104] */
     33  1.5  rillig 	sink(pt->x);
     34  1.5  rillig 
     35  1.5  rillig 	/* accessing a nonexistent member via the wrong operator */
     36  1.5  rillig 	/* FIXME: "type 'int'" is wrong. */
     37  1.5  rillig 	/* expect+1: error: type 'int' does not have member 'z' [101] */
     38  1.5  rillig 	sink(ptr.z);
     39  1.5  rillig 	/* FIXME: "type 'int'" is wrong. */
     40  1.5  rillig 	/* expect+1: error: type 'int' does not have member 'z' [101] */
     41  1.5  rillig 	sink(pt->z);
     42  1.2  rillig }
     43