Home | History | Annotate | Line # | Download | only in lint1
msg_101.c revision 1.6
      1  1.6  rillig /*	$NetBSD: msg_101.c,v 1.6 2021/06/30 14:11:08 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.6  rillig 	/* expect+1: error: type 'pointer to const struct point' does not have member 'z' [101] */
     21  1.5  rillig 	sink(ptr->z);
     22  1.6  rillig 	/* expect+1: error: type 'const struct point' does not have member 'z' [101] */
     23  1.5  rillig 	sink(pt.z);
     24  1.5  rillig 
     25  1.5  rillig 	/* mixed up '.' and '->' */
     26  1.5  rillig 	/* TODO: mention actual type in the diagnostic */
     27  1.5  rillig 	/* expect+1: error: left operand of '.' must be struct/union object [103] */
     28  1.5  rillig 	sink(ptr.x);
     29  1.5  rillig 	/* TODO: put actual type in 'quotes' */
     30  1.5  rillig 	/* expect+1: error: left operand of '->' must be pointer to struct/union not struct point [104] */
     31  1.5  rillig 	sink(pt->x);
     32  1.5  rillig 
     33  1.5  rillig 	/* accessing a nonexistent member via the wrong operator */
     34  1.6  rillig 	/* expect+1: error: type 'pointer to const struct point' does not have member 'z' [101] */
     35  1.5  rillig 	sink(ptr.z);
     36  1.6  rillig 	/* XXX: Why is the 'const' missing here, but not above? */
     37  1.6  rillig 	/* expect+1: error: type 'struct point' does not have member 'z' [101] */
     38  1.5  rillig 	sink(pt->z);
     39  1.2  rillig }
     40