xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_331.c (revision 039b010016da489b3c993f4814255a8bc72125df)
1*039b0100Srillig /*	$NetBSD: msg_331.c,v 1.7 2023/08/02 18:51:25 rillig Exp $	*/
2a738d648Srillig # 3 "msg_331.c"
3a738d648Srillig 
4a738d648Srillig // Test for message: left operand of '%s' must be bool, not '%s' [331]
5a738d648Srillig //
6a738d648Srillig // See d_c99_bool_strict.c for many more examples.
7a738d648Srillig 
8b2baa501Srillig /* lint1-extra-flags: -T -X 351 */
9a738d648Srillig 
10a738d648Srillig typedef _Bool bool;
11a738d648Srillig 
12a738d648Srillig void
13a738d648Srillig test(bool);
14a738d648Srillig 
15a738d648Srillig void
example(bool b,char c,int i)16a738d648Srillig example(bool b, char c, int i)
17a738d648Srillig {
18a738d648Srillig 	test(b && b);
19ec42194bSrillig 
20ec42194bSrillig 	/* expect+2: error: left operand of '&&' must be bool, not 'char' [331] */
21*039b0100Srillig 	/* expect+1: error: parameter 1 expects '_Bool', gets passed 'int' [334] */
22ec42194bSrillig 	test(c && b);
23ec42194bSrillig 
24ec42194bSrillig 	/* expect+2: error: left operand of '&&' must be bool, not 'int' [331] */
25*039b0100Srillig 	/* expect+1: error: parameter 1 expects '_Bool', gets passed 'int' [334] */
26ec42194bSrillig 	test(i && b);
27a738d648Srillig 
28a738d648Srillig 	test(c != '\0');
29a738d648Srillig 	test(i != 0);
30a738d648Srillig }
31