msg_130.c revision 1.7
1/* $NetBSD: msg_130.c,v 1.7 2021/03/05 16:35:52 rillig Exp $ */ 2# 3 "msg_130.c" 3 4// Test for message: enum type mismatch: '%s' '%s' '%s' [130] 5 6/* See also msg_241.c, which covers unusual operators on enums. */ 7 8enum color { 9 RED = 1 << 0, 10 GREEN = 1 << 1, 11 BLUE = 1 << 2 12}; 13 14enum size { 15 SMALL, 16 MEDIUM, 17 LARGE 18}; 19 20enum daytime { 21 NIGHT, MORNING, NOON, EVENING 22}; 23 24void sink(_Bool); 25 26void 27example(_Bool cond, enum color c, enum size s) 28{ 29 sink(cond ? GREEN : MORNING); /* expect: 130 */ 30 31 sink(c != s); /* expect: 130 */ 32 sink(c == s); /* expect: 130 */ 33 sink((c & MEDIUM) != 0); /* might be useful to warn about */ 34 sink((c | MEDIUM) != 0); /* might be useful to warn about */ 35 36 c |= MEDIUM; /* might be useful to warn about */ 37 c &= MEDIUM; /* might be useful to warn about */ 38 39 /* The cast to unsigned is required by GCC at WARNS=6. */ 40 c &= ~(unsigned)MEDIUM; /* might be useful to warn about */ 41} 42 43void 44switch_example(enum color c) 45{ 46 switch (c) { 47 case EVENING: /* TODO: 130 */ 48 case LARGE: /* TODO: 130 */ 49 sink(1 == 1); 50 break; 51 default: 52 break; 53 } 54} 55