Home | History | Annotate | Download | only in Sema
      1 // RUN: %clang_cc1 -fsyntax-only -verify -Wassign-enum %s
      2 // rdar://11824807
      3 
      4 typedef enum CCTestEnum
      5 {
      6   One,
      7   Two=4,
      8   Three
      9 } CCTestEnum;
     10 
     11 CCTestEnum test = 50; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
     12 CCTestEnum test1 = -50; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
     13 
     14 CCTestEnum foo(CCTestEnum r) {
     15   return 20; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
     16 }
     17 
     18 enum Test2 { K_zero, K_one };
     19 enum Test2 test2(enum Test2 *t) {
     20   *t = 20; // expected-warning {{integer constant not in range of enumerated type 'enum Test2'}}
     21   return 10; // expected-warning {{integer constant not in range of enumerated type 'enum Test2'}}
     22 }
     23 
     24 // PR15069
     25 typedef enum
     26 {
     27   a = 0
     28 } T;
     29 
     30 void f()
     31 {
     32   T x = a;
     33   x += 1; // expected-warning {{integer constant not in range of enumerated type}}
     34 }
     35 
     36 int main() {
     37   CCTestEnum test = 1; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
     38   test = 600; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
     39   foo(2); // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
     40   foo(-1); // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
     41   foo(4);
     42   foo(Two+1);
     43 }
     44 
     45