1 1.8 rillig /* $NetBSD: msg_242.c,v 1.8 2023/07/09 11:01:27 rillig Exp $ */ 2 1.1 rillig # 3 "msg_242.c" 3 1.1 rillig 4 1.6 rillig // Test for message: combination of '%s' and '%s', op '%s' [242] 5 1.1 rillig 6 1.7 rillig /* lint1-extra-flags: -e -X 351 */ 7 1.3 rillig 8 1.3 rillig enum E { 9 1.3 rillig E1 10 1.3 rillig }; 11 1.3 rillig 12 1.3 rillig void sink_enum(enum E); 13 1.3 rillig void sink_int(int); 14 1.3 rillig 15 1.3 rillig void 16 1.3 rillig example(enum E e, int i) 17 1.3 rillig { 18 1.3 rillig enum E e2 = e; 19 1.4 rillig /* expect+1: warning: initialization of 'enum E' with 'int' [277] */ 20 1.4 rillig enum E e3 = i; 21 1.4 rillig /* expect+1: warning: initialization of 'int' with 'enum E' [277] */ 22 1.4 rillig int i2 = e; 23 1.3 rillig int i3 = i; 24 1.3 rillig 25 1.6 rillig /* expect+1: warning: combination of 'enum E' and 'int', op '=' [242] */ 26 1.4 rillig e3 = i; 27 1.6 rillig /* expect+1: warning: combination of 'int' and 'enum E', op '=' [242] */ 28 1.4 rillig i2 = e; 29 1.4 rillig 30 1.3 rillig sink_enum(e2); 31 1.3 rillig sink_enum(e3); 32 1.3 rillig sink_int(i2); 33 1.3 rillig sink_int(i3); 34 1.3 rillig } 35 1.5 rillig 36 1.5 rillig 37 1.5 rillig /* 38 1.5 rillig * In C, the only ways to create named compile-time integer constants are 39 1.5 rillig * preprocessor macros or enum constants. All other expressions do not count 40 1.5 rillig * as constant expressions, even if they are declared 'static const' or 41 1.5 rillig * 'const'. 42 1.5 rillig */ 43 1.5 rillig unsigned 44 1.5 rillig unnamed_enum(void) 45 1.5 rillig { 46 1.5 rillig enum { 47 1.5 rillig compile_time_constant = 2 48 1.5 rillig }; 49 1.5 rillig 50 1.5 rillig unsigned i = 3; 51 1.5 rillig 52 1.8 rillig /* expect+3: warning: dubious operation '*' on enum [241] */ 53 1.5 rillig /* FIXME: Combining 'unsigned int' with 'unsigned int' is OK. */ 54 1.6 rillig /* expect+1: warning: combination of 'unsigned int' and 'unsigned int', op '=' [242] */ 55 1.5 rillig i = compile_time_constant * i; 56 1.5 rillig return i; 57 1.5 rillig } 58