1/* PR c/4475, PR c++/3780 */ 2/* { dg-do compile } */ 3/* { dg-options "-Wswitch" } */ 4 5enum e { e1, e2 }; 6 7int 8foo (int i, int j, enum e ei, enum e ej, enum e ek, enum e el, 9 enum e em, enum e en, enum e eo, enum e ep) 10{ 11 switch (i) 12 { 13 case 1: return 1; 14 case 2: return 2; 15 } 16 switch (j) 17 { 18 case 3: return 4; 19 case 4: return 3; 20 default: break; 21 } 22 switch (ei) /* { dg-warning "enumeration value 'e1' not handled in switch" "enum e1" } */ 23 { /*{ dg-warning "enumeration value 'e2' not handled in switch" "enum e2" { target *-*-* } 22 } */ 24 } 25 switch (ej) 26 { 27 default: break; 28 } 29 switch (ek) /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" } */ 30 { 31 case e1: return 1; 32 } 33 switch (el) 34 { 35 case e1: return 1; 36 default: break; 37 } 38 switch (em) 39 { 40 case e1: return 1; 41 case e2: return 2; 42 } 43 switch (en) 44 { 45 case e1: return 1; 46 case e2: return 2; 47 default: break; 48 } 49 switch (eo) 50 { 51 case e1: return 1; 52 case e2: return 2; 53 case 3: return 3; /* { dg-warning "case value '3' not in enumerated type 'enum e'" "excess 3" } */ 54 } 55 switch (ep) 56 { 57 case e1: return 1; 58 case e2: return 2; 59 case 3: return 3; 60 default: break; 61 } /* Since there is a default, no warning about ``case 3'' */ 62 return 0; 63} 64