diff options
Diffstat (limited to 'test/Sema/switch.c')
-rw-r--r-- | test/Sema/switch.c | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/test/Sema/switch.c b/test/Sema/switch.c index 08ab0e0..2690ad2 100644 --- a/test/Sema/switch.c +++ b/test/Sema/switch.c @@ -85,3 +85,141 @@ int f0(int var) { // expected-note{{'var' declared here}} } return 2; } + +void test7() { + enum { + A = 1, + B + } a; + switch(a) { //expected-warning{{enumeration value 'B' not handled in switch}} + case A: + break; + } + switch(a) { + case B: + case A: + break; + } + switch(a) { + case A: + case B: + case 3: // expected-warning{{case value not in enumerated type ''}} + break; + } + switch(a) { + case A: + case B: + case 3 ... //expected-warning{{case value not in enumerated type ''}} + 4: //expected-warning{{case value not in enumerated type ''}} + break; + } + switch(a) { + case 1 ... 2: + break; + } + switch(a) { + case 0 ... 2: //expected-warning{{case value not in enumerated type ''}} + break; + } + switch(a) { + case 1 ... 3: //expected-warning{{case value not in enumerated type ''}} + break; + } + switch(a) { + case 0 ... //expected-warning{{case value not in enumerated type ''}} + 3: //expected-warning{{case value not in enumerated type ''}} + break; + } + +} + +void test8() { + enum { + A, + B, + C = 1 + } a; + switch(a) { + case A: + case B: + break; + } + switch(a) { + case A: + case C: + break; + } + switch(a) { //expected-warning{{enumeration value 'B' not handled in switch}} + case A: + break; + } +} + +void test9() { + enum { + A = 3, + C = 1 + } a; + switch(a) { + case 0: //expected-warning{{case value not in enumerated type ''}} + case 1: + case 2: //expected-warning{{case value not in enumerated type ''}} + case 3: + case 4: //expected-warning{{case value not in enumerated type ''}} + break; + } +} + +void test10() { + enum { + A = 10, + C = 2, + B = 4, + D = 12 + } a; + switch(a) { + case 0 ... //expected-warning{{case value not in enumerated type ''}} + 1: //expected-warning{{case value not in enumerated type ''}} + case 2 ... 4: + case 5 ... //expected-warning{{case value not in enumerated type ''}} + 9: //expected-warning{{case value not in enumerated type ''}} + case 10 ... 12: + case 13 ... //expected-warning{{case value not in enumerated type ''}} + 16: //expected-warning{{case value not in enumerated type ''}} + break; + } +} + +void test11() { + enum { + A = -1, + B, + C + } a; + switch(a) { //expected-warning{{enumeration value 'A' not handled in switch}} + case B: + case C: + break; + } + + switch(a) { + case B: + case C: + break; + + default: + break; + } +} + +void test12() { + enum { + A = -1, + B = 4294967286 + } a; + switch(a) { + case A: + case B: + break; + } +} |