xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_126.c (revision 567c9b1787dc766f1842a02f2b8bbd8a3314a5bf)
1*567c9b17Srillig /*	$NetBSD: msg_126.c,v 1.9 2024/12/09 22:43:33 rillig Exp $	*/
2a0a15c14Srillig # 3 "msg_126.c"
3a0a15c14Srillig 
4f963c8e4Srillig // Test for message: incompatible types '%s' and '%s' in conditional [126]
5a0a15c14Srillig 
6*567c9b17Srillig /* lint1-extra-flags: -X 351 -q 1 */
7e6298b92Srillig 
865e5c21bSrillig /* ARGSUSED */
9*567c9b17Srillig void
10*567c9b17Srillig example(int i, void *ptr, double dbl, void (*return_void)(void))
11af03d2a0Srillig {
12*567c9b17Srillig 	/* expect+1: error: incompatible types 'pointer to void' and 'double' in conditional [126] */
13*567c9b17Srillig 	i = i > 0 ? ptr : dbl;
14*567c9b17Srillig 
15*567c9b17Srillig 	ptr = i > 0 ? ptr : (void *)0;
16*567c9b17Srillig 
17*567c9b17Srillig 	ptr = i > 0 ? ptr : 0;
18*567c9b17Srillig 
19*567c9b17Srillig 	/* expect+1: implicit conversion from floating point 'double' to integer 'int' [Q1] */
20*567c9b17Srillig 	i = i > 0 ? dbl : i;
21*567c9b17Srillig 
22*567c9b17Srillig 	// GCC accepts the 'int/void' mismatch even with -Wall -Wextra -std=c99.
23*567c9b17Srillig 	/* expect+1: warning: incompatible types 'void' and 'int' in conditional [126] */
24*567c9b17Srillig 	i > 0 ? return_void() : 0;
25*567c9b17Srillig 
26*567c9b17Srillig 	i > 0 ? return_void() : (void)0;
27af03d2a0Srillig }
28