msg_333.c revision 1.8 1 1.8 rillig /* $NetBSD: msg_333.c,v 1.8 2024/11/13 04:32:49 rillig Exp $ */
2 1.1 rillig # 3 "msg_333.c"
3 1.1 rillig
4 1.1 rillig // Test for message: controlling expression must be bool, not '%s' [333]
5 1.1 rillig //
6 1.1 rillig // See d_c99_bool_strict.c for many more examples.
7 1.1 rillig
8 1.7 rillig /* lint1-extra-flags: -T -X 351 */
9 1.1 rillig
10 1.1 rillig typedef _Bool bool;
11 1.1 rillig
12 1.6 rillig static enum tagged_color {
13 1.6 rillig tagged_red,
14 1.6 rillig } e1;
15 1.6 rillig typedef enum {
16 1.6 rillig typedef_red,
17 1.6 rillig } typedef_color;
18 1.6 rillig static typedef_color e2;
19 1.6 rillig
20 1.1 rillig const char *
21 1.1 rillig example(bool b, int i, const char *p)
22 1.1 rillig {
23 1.4 rillig
24 1.1 rillig if (b)
25 1.1 rillig return "bool";
26 1.4 rillig
27 1.5 rillig /* expect+1: error: controlling expression must be bool, not 'int' [333] */
28 1.4 rillig if (i)
29 1.1 rillig return "int";
30 1.4 rillig
31 1.6 rillig /* expect+1: error: controlling expression must be bool, not 'enum tagged_color' [333] */
32 1.6 rillig if (e1)
33 1.6 rillig return "tagged enum";
34 1.6 rillig
35 1.6 rillig /* expect+1: error: controlling expression must be bool, not 'enum typedef typedef_color' [333] */
36 1.6 rillig if (e2)
37 1.6 rillig return "typedef enum";
38 1.6 rillig
39 1.5 rillig /* expect+1: error: controlling expression must be bool, not 'pointer' [333] */
40 1.4 rillig if (p)
41 1.1 rillig return "pointer";
42 1.4 rillig
43 1.4 rillig if (__lint_false) {
44 1.8 rillig /* expect+1: warning: 'return' statement not reached [193] */
45 1.4 rillig return "bool constant";
46 1.4 rillig }
47 1.4 rillig
48 1.5 rillig /* expect+1: error: controlling expression must be bool, not 'int' [333] */
49 1.4 rillig if (0) {
50 1.8 rillig /* expect+1: warning: 'return' statement not reached [193] */
51 1.2 rillig return "integer constant";
52 1.4 rillig }
53 1.4 rillig
54 1.1 rillig return p + i;
55 1.1 rillig }
56