| /* { dg-do compile } */ |
| /* { dg-options "-Wc++-compat" } */ |
| enum E1 { A, B, C }; |
| enum E2 { D, E, F }; |
| |
| enum E1 g1; |
| enum E2 g2; |
| |
| void |
| f1 () |
| { |
| int a; |
| int d; |
| enum E1 e1; |
| enum E2 e2; |
| a = A; |
| a = !B; |
| d = E; |
| e1 = A; |
| e1 = D; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| e1 = 0; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| e1 = (enum E1) 0; |
| e1 = (enum E2) 0; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| e1 = e2; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| e1 = g1; |
| e1 = g2; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| e2 = A; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| e2 = D; |
| } |
| |
| struct s { enum E1 e1 : 3; }; |
| |
| void |
| f2 (struct s sv) |
| { |
| sv.e1 = A; |
| sv.e1 = D; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| g1 = sv.e1; |
| g2 = sv.e1; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| } |
| |
| void |
| f3 (struct s *pv) |
| { |
| pv->e1 = A; |
| pv->e1 = D; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| g1 = pv->e1; |
| g2 = pv->e1; /* { dg-warning "invalid in C\[+\]\[+\]" } */ |
| } |