xref: /aosp_15_r20/external/clang/test/SemaCXX/enum-increment.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only %s -verify
2*67e74705SXin Li 
3*67e74705SXin Li enum A { A1, A2, A3 };
test()4*67e74705SXin Li void test() {
5*67e74705SXin Li   A a;
6*67e74705SXin Li   a++;  // expected-error{{cannot increment expression of enum type 'A'}}
7*67e74705SXin Li   a--;  // expected-error{{cannot decrement expression of enum type 'A'}}
8*67e74705SXin Li   ++a;  // expected-error{{cannot increment expression of enum type 'A'}}
9*67e74705SXin Li   --a;  // expected-error{{cannot decrement expression of enum type 'A'}}
10*67e74705SXin Li }
11*67e74705SXin Li 
12*67e74705SXin Li enum B {B1, B2};
operator ++(B & b)13*67e74705SXin Li inline B &operator++ (B &b) { b = B((int)b+1); return b; }
operator ++(B & b,int)14*67e74705SXin Li inline B operator++ (B &b, int) { B ret = b; ++b; return b; }
15*67e74705SXin Li 
foo(enum B b)16*67e74705SXin Li void foo(enum B b) { ++b; b++; }
17