111
|
1 /* { dg-do compile } */
|
|
2 /* { dg-options "-Wc++-compat" } */
|
|
3 enum E1 { A, B, C };
|
|
4 enum E2 { D, E, F };
|
|
5
|
|
6 int f1() { return A; }
|
|
7
|
|
8 struct s { enum E1 e1 : 3; enum E2 e2 : 4; };
|
|
9
|
|
10 enum E1
|
|
11 f2 (int i, struct s sv, struct s *pv)
|
|
12 {
|
|
13 int a;
|
|
14 enum E1 e1 = B;
|
|
15 enum E2 e2 = E;
|
|
16 switch (i)
|
|
17 {
|
|
18 case 0:
|
|
19 return A;
|
|
20 case 1:
|
|
21 return D; /* { dg-warning "invalid in C\[+\]\[+\]" } */
|
|
22 case 2:
|
|
23 return 0; /* { dg-warning "invalid in C\[+\]\[+\]" } */
|
|
24 case 3:
|
|
25 return (enum E1) 1;
|
|
26 case 4:
|
|
27 return (enum E2) 2; /* { dg-warning "invalid in C\[+\]\[+\]" } */
|
|
28 case 5:
|
|
29 return e1;
|
|
30 case 6:
|
|
31 return e2; /* { dg-warning "invalid in C\[+\]\[+\]" } */
|
|
32 case 7:
|
|
33 return pv->e1;
|
|
34 case 8:
|
|
35 return sv.e1;
|
|
36 case 9:
|
|
37 return pv->e2; /* { dg-warning "invalid in C\[+\]\[+\]" } */
|
|
38 case 10:
|
|
39 return sv.e2; /* { dg-warning "invalid in C\[+\]\[+\]" } */
|
|
40 case 11:
|
|
41 return 1, A;
|
|
42 default:
|
|
43 return C;
|
|
44 }
|
|
45 }
|