diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-07-17 18:00:08 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-07-17 18:00:08 +0000 |
commit | 379b28183a7dcb715c3f3eb2da4b0157d6d8ffbe (patch) | |
tree | ff0370720245e781885b0755e78005ea2fc70069 /test | |
parent | d5209ae13a7c42e2b7fa641f75a66e545959cbed (diff) |
Issue warning when assigning out-of-range integer values to enums.
Due to performance cost, this is an opt-in option placed
under -Wassign-enum. // rdar://11824807
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160382 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/Sema/warn-outof-range-assign-enum.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/Sema/warn-outof-range-assign-enum.c b/test/Sema/warn-outof-range-assign-enum.c new file mode 100644 index 0000000000..2e79e66f49 --- /dev/null +++ b/test/Sema/warn-outof-range-assign-enum.c @@ -0,0 +1,32 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -Wassign-enum %s +// rdar://11824807 + +typedef enum CCTestEnum +{ + One, + Two=4, + Three +} CCTestEnum; + +CCTestEnum test = 50; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}} +CCTestEnum test1 = -50; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}} + +CCTestEnum foo(CCTestEnum r) { + return 20; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}} +} + +enum Test2 { K_zero, K_one }; +enum Test2 test2(enum Test2 *t) { + *t = 20; // expected-warning {{integer constant not in range of enumerated type 'enum Test2'}} + return 10; // expected-warning {{integer constant not in range of enumerated type 'enum Test2'}} +} + +int main() { + CCTestEnum test = 1; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}} + test = 600; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}} + foo(2); // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}} + foo(-1); // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}} + foo(4); + foo(Two+1); +} + |