[cfe-commits] r153219 - in /cfe/trunk: lib/Sema/SemaStmt.cpp test/Sema/switch.c

Fariborz Jahanian fjahanian at apple.com
Wed Mar 21 13:56:30 PDT 2012


Author: fjahanian
Date: Wed Mar 21 15:56:29 2012
New Revision: 153219

URL: http://llvm.org/viewvc/llvm-project?rev=153219&view=rev
Log:
For enums with no tag name, display its location in 
the diagnostic instead of displaying ''.
// rdar://11082110

Modified:
    cfe/trunk/lib/Sema/SemaStmt.cpp
    cfe/trunk/test/Sema/switch.c

Modified: cfe/trunk/lib/Sema/SemaStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=153219&r1=153218&r2=153219&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaStmt.cpp (original)
+++ cfe/trunk/lib/Sema/SemaStmt.cpp Wed Mar 21 15:56:29 2012
@@ -881,7 +881,7 @@
           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();
@@ -892,7 +892,7 @@
 
         if (EI == EIend || EI->first != RI->first) {
           Diag(RI->second->getLHS()->getExprLoc(), diag::warn_not_in_enum)
-            << ED->getDeclName();
+            << CondTypeBeforePromotion;
         }
 
         llvm::APSInt Hi = 
@@ -902,7 +902,7 @@
           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

Modified: cfe/trunk/test/Sema/switch.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/switch.c?rev=153219&r1=153218&r2=153219&view=diff
==============================================================================
--- cfe/trunk/test/Sema/switch.c (original)
+++ cfe/trunk/test/Sema/switch.c Wed Mar 21 15:56:29 2012
@@ -109,14 +109,14 @@
   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) {
@@ -124,16 +124,16 @@
       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;
   }
 
@@ -167,11 +167,11 @@
     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;
   }
 }
@@ -184,14 +184,14 @@
     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;
   }
 }
@@ -303,3 +303,20 @@
   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;
+                }
+}





More information about the cfe-commits mailing list