EI++;
if (EI == EIend || EI->first > CI->first)
Diag(CI->second->getLHS()->getExprLoc(), diag::warn_not_in_enum)
- << ED->getDeclName();
+ << CondTypeBeforePromotion;
}
// See which of case ranges aren't in enum
EI = EnumVals.begin();
if (EI == EIend || EI->first != RI->first) {
Diag(RI->second->getLHS()->getExprLoc(), diag::warn_not_in_enum)
- << ED->getDeclName();
+ << CondTypeBeforePromotion;
}
llvm::APSInt Hi =
EI++;
if (EI == EIend || EI->first != Hi)
Diag(RI->second->getRHS()->getExprLoc(), diag::warn_not_in_enum)
- << ED->getDeclName();
+ << CondTypeBeforePromotion;
}
// Check which enum vals aren't in switch
switch(a) {
case A:
case B:
- case 3: // expected-warning{{case value not in enumerated type ''}}
+ case 3: // expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
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 ''}}
+ case 3 ... //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
+ 4: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
break;
}
switch(a) {
break;
}
switch(a) {
- case 0 ... 2: //expected-warning{{case value not in enumerated type ''}}
+ case 0 ... 2: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
break;
}
switch(a) {
- case 1 ... 3: //expected-warning{{case value not in enumerated type ''}}
+ case 1 ... 3: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
break;
}
switch(a) {
- case 0 ... //expected-warning{{case value not in enumerated type ''}}
- 3: //expected-warning{{case value not in enumerated type ''}}
+ case 0 ... //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
+ 3: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
break;
}
C = 1
} a;
switch(a) {
- case 0: //expected-warning{{case value not in enumerated type ''}}
+ case 0: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
case 1:
- case 2: //expected-warning{{case value not in enumerated type ''}}
+ case 2: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
case 3:
- case 4: //expected-warning{{case value not in enumerated type ''}}
+ case 4: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
break;
}
}
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 0 ... //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
+ 1: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
case 2 ... 4:
- case 5 ... //expected-warning{{case value not in enumerated type ''}}
- 9: //expected-warning{{case value not in enumerated type ''}}
+ case 5 ... //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
+ 9: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
case 10 ... 12:
- case 13 ... //expected-warning{{case value not in enumerated type ''}}
- 16: //expected-warning{{case value not in enumerated type ''}}
+ case 13 ... //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
+ 16: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
break;
}
}
default: return 2; // expected-warning {{default label in switch which covers all enumeration values}}
}
}
+
+// rdar://110822110
+typedef enum {
+ kOne = 1,
+} Ints;
+
+void rdar110822110(Ints i)
+{
+ switch (i) {
+ case kOne:
+ break;
+ case 2: // expected-warning {{case value not in enumerated type 'Ints'}}
+ break;
+ default: // expected-warning {{default label in switch which covers all enumeration values}}
+ break;
+ }
+}