msg_130.c revision 1.7
11.7Srillig/* $NetBSD: msg_130.c,v 1.7 2021/03/05 16:35:52 rillig Exp $ */ 21.1Srillig# 3 "msg_130.c" 31.1Srillig 41.5Srillig// Test for message: enum type mismatch: '%s' '%s' '%s' [130] 51.1Srillig 61.7Srillig/* See also msg_241.c, which covers unusual operators on enums. */ 71.7Srillig 81.2Srilligenum color { 91.4Srillig RED = 1 << 0, 101.4Srillig GREEN = 1 << 1, 111.4Srillig BLUE = 1 << 2 121.4Srillig}; 131.4Srillig 141.4Srilligenum size { 151.4Srillig SMALL, 161.4Srillig MEDIUM, 171.4Srillig LARGE 181.2Srillig}; 191.2Srillig 201.2Srilligenum daytime { 211.2Srillig NIGHT, MORNING, NOON, EVENING 221.2Srillig}; 231.2Srillig 241.4Srilligvoid sink(_Bool); 251.4Srillig 261.4Srilligvoid 271.4Srilligexample(_Bool cond, enum color c, enum size s) 281.2Srillig{ 291.4Srillig sink(cond ? GREEN : MORNING); /* expect: 130 */ 301.4Srillig 311.4Srillig sink(c != s); /* expect: 130 */ 321.4Srillig sink(c == s); /* expect: 130 */ 331.4Srillig sink((c & MEDIUM) != 0); /* might be useful to warn about */ 341.4Srillig sink((c | MEDIUM) != 0); /* might be useful to warn about */ 351.4Srillig 361.4Srillig c |= MEDIUM; /* might be useful to warn about */ 371.4Srillig c &= MEDIUM; /* might be useful to warn about */ 381.4Srillig 391.4Srillig /* The cast to unsigned is required by GCC at WARNS=6. */ 401.4Srillig c &= ~(unsigned)MEDIUM; /* might be useful to warn about */ 411.2Srillig} 421.6Srillig 431.6Srilligvoid 441.6Srilligswitch_example(enum color c) 451.6Srillig{ 461.6Srillig switch (c) { 471.6Srillig case EVENING: /* TODO: 130 */ 481.6Srillig case LARGE: /* TODO: 130 */ 491.6Srillig sink(1 == 1); 501.6Srillig break; 511.6Srillig default: 521.6Srillig break; 531.6Srillig } 541.6Srillig} 55