Home | History | Annotate | Line # | Download | only in lint1
      1 /*	$NetBSD: msg_108.c,v 1.9 2023/07/07 19:45:22 rillig Exp $	*/
      2 # 3 "msg_108.c"
      3 
      4 // Test for message: operand of '%s' has invalid type '%s' [108]
      5 
      6 /* lint1-extra-flags: -X 351 */
      7 
      8 /*
      9  * Before tree.c 1.137 from 2021-01-19, taking the complement of a struct
     10  * (an absurd idea, by the way), resulted in an internal error because the
     11  * message 108 took two type operands, the second of which was not available
     12  * for unary operators.
     13  *
     14  * Since an error "invalid type 'none'" doesn't make sense, lint rather chose
     15  * to crash than to generate such an error.
     16  */
     17 void
     18 complement_of_a_struct(void)
     19 {
     20 	struct s {
     21 		int member;
     22 	} s = {
     23 	    0
     24 	};
     25 
     26 	/* expect+1: error: operand of '~' has invalid type 'struct s' [108] */
     27 	s = ~s;
     28 }
     29