1*6937eff3Srillig /* $NetBSD: msg_333.c,v 1.8 2024/11/13 04:32:49 rillig Exp $ */ 2a738d648Srillig # 3 "msg_333.c" 3a738d648Srillig 4a738d648Srillig // Test for message: controlling expression must be bool, not '%s' [333] 5a738d648Srillig // 6a738d648Srillig // See d_c99_bool_strict.c for many more examples. 7a738d648Srillig 8e6298b92Srillig /* lint1-extra-flags: -T -X 351 */ 9a738d648Srillig 10a738d648Srillig typedef _Bool bool; 11a738d648Srillig 120510ee8eSrillig static enum tagged_color { 130510ee8eSrillig tagged_red, 140510ee8eSrillig } e1; 150510ee8eSrillig typedef enum { 160510ee8eSrillig typedef_red, 170510ee8eSrillig } typedef_color; 180510ee8eSrillig static typedef_color e2; 190510ee8eSrillig 20a738d648Srillig const char * 21a738d648Srillig example(bool b, int i, const char *p) 22a738d648Srillig { 238d5c9f25Srillig 24a738d648Srillig if (b) 25a738d648Srillig return "bool"; 268d5c9f25Srillig 27c83f7defSrillig /* expect+1: error: controlling expression must be bool, not 'int' [333] */ 288d5c9f25Srillig if (i) 29a738d648Srillig return "int"; 308d5c9f25Srillig 310510ee8eSrillig /* expect+1: error: controlling expression must be bool, not 'enum tagged_color' [333] */ 320510ee8eSrillig if (e1) 330510ee8eSrillig return "tagged enum"; 340510ee8eSrillig 350510ee8eSrillig /* expect+1: error: controlling expression must be bool, not 'enum typedef typedef_color' [333] */ 360510ee8eSrillig if (e2) 370510ee8eSrillig return "typedef enum"; 380510ee8eSrillig 39c83f7defSrillig /* expect+1: error: controlling expression must be bool, not 'pointer' [333] */ 408d5c9f25Srillig if (p) 41a738d648Srillig return "pointer"; 428d5c9f25Srillig 438d5c9f25Srillig if (__lint_false) { 44*6937eff3Srillig /* expect+1: warning: 'return' statement not reached [193] */ 458d5c9f25Srillig return "bool constant"; 468d5c9f25Srillig } 478d5c9f25Srillig 48c83f7defSrillig /* expect+1: error: controlling expression must be bool, not 'int' [333] */ 498d5c9f25Srillig if (0) { 50*6937eff3Srillig /* expect+1: warning: 'return' statement not reached [193] */ 519f199e7dSrillig return "integer constant"; 528d5c9f25Srillig } 538d5c9f25Srillig 54a738d648Srillig return p + i; 55a738d648Srillig } 56