Home | History | Annotate | Line # | Download | only in lint1
      1  1.10  rillig /*	$NetBSD: msg_101.c,v 1.10 2023/03/28 14:44:34 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.10  rillig /* lint1-extra-flags: -X 351 */
      7  1.10  rillig 
      8   1.2  rillig struct point {
      9   1.2  rillig 	int x, y;
     10   1.2  rillig };
     11   1.2  rillig 
     12   1.5  rillig void sink(int);
     13   1.5  rillig 
     14   1.5  rillig void
     15   1.5  rillig test(const struct point *ptr, const struct point pt)
     16   1.2  rillig {
     17   1.5  rillig 	/* accessing an existing member */
     18   1.5  rillig 	sink(ptr->x);
     19   1.5  rillig 	sink(pt.x);
     20   1.5  rillig 
     21   1.5  rillig 	/* accessing a nonexistent member */
     22   1.6  rillig 	/* expect+1: error: type 'pointer to const struct point' does not have member 'z' [101] */
     23   1.5  rillig 	sink(ptr->z);
     24   1.6  rillig 	/* expect+1: error: type 'const struct point' 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.7  rillig 	/* expect+1: error: left operand of '.' must be struct or union, not 'pointer to const struct point' [103] */
     29   1.5  rillig 	sink(ptr.x);
     30   1.7  rillig 	/* expect+1: error: left operand of '->' must be pointer to struct or 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 	/* expect+1: error: type 'struct point' does not have member 'z' [101] */
     37   1.5  rillig 	sink(pt->z);
     38   1.2  rillig }
     39