Home | History | Annotate | Line # | Download | only in lint1
msg_379.c revision 1.2
      1  1.2  rillig /*	$NetBSD: msg_379.c,v 1.2 2024/11/13 04:32:50 rillig Exp $	*/
      2  1.1  rillig # 3 "msg_379.c"
      3  1.1  rillig 
      4  1.1  rillig // Test for message: comparing integer '%s' to floating point constant %Lg [379]
      5  1.1  rillig 
      6  1.1  rillig /*
      7  1.1  rillig  * Comparing an integer expression to a floating point constant mixes
      8  1.1  rillig  * different kinds of types.  This mixture is more complicated than necessary,
      9  1.1  rillig  * thus confusing human readers.
     10  1.1  rillig  *
     11  1.1  rillig  * The compilers are fine with this kind of expression: GCC treats the
     12  1.1  rillig  * constant as an integer even at -O0 while Clang needs at least -O.
     13  1.1  rillig  */
     14  1.1  rillig 
     15  1.1  rillig /* lint1-extra-flags: -X 351 */
     16  1.1  rillig 
     17  1.1  rillig int
     18  1.1  rillig comparisons(int x)
     19  1.1  rillig {
     20  1.1  rillig 	if (3 > 123.0)
     21  1.2  rillig 		/* expect+1: warning: 'return' statement not reached [193] */
     22  1.1  rillig 		return 0;
     23  1.1  rillig 	/* expect+1: warning: comparing integer 'int' to floating point constant 123 [379] */
     24  1.1  rillig 	if (x > 123.0)
     25  1.1  rillig 		return 1;
     26  1.1  rillig 
     27  1.1  rillig 	// Yoda-style comparisons are unusual enough to not warn about them.
     28  1.1  rillig 	if (123.0 > x)
     29  1.1  rillig 		return 2;
     30  1.1  rillig 	return 3;
     31  1.1  rillig }
     32