2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / g++.dg / warn / Wswitch-1.C
blobe9fcb581817661ecf438a669b989698f338c6079
1 /* PR c/4475, PR c++/3780 */
2 /* { dg-do compile } */
3 /* { dg-options "-Wswitch" } */
5 enum e { e1, e2 };
7 int
8 foo (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)
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)
23     { /* { dg-warning "enumeration value `e1' not handled in switch" "enum e1" { target *-*-* } 24 } */
24     } /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" } */
25   switch (ej)
26     {
27     default: break;
28     }
29   switch (ek)
30     {
31     case e1: return 1;
32     } /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" } */
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;
54     } /* { dg-warning "case value `3' not in enumerated type `e'" "excess 3" } */
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;