]> granicus.if.org Git - clang/commitdiff
objective-c: improve diagnostic when collection expression is
authorFariborz Jahanian <fjahanian@apple.com>
Fri, 22 Jun 2012 15:37:00 +0000 (15:37 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Fri, 22 Jun 2012 15:37:00 +0000 (15:37 +0000)
not a pointer to a fast-enumerable object. // rdar://11488666

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158998 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
test/Parser/objc-forcollection-neg.m
test/SemaObjCXX/instantiate-stmt.mm

index a7582a0d28e75403a9e30e26ef799de48a0bedac..43ef9aca5832162815e31285de9a84ac49446bf0 100644 (file)
@@ -5485,7 +5485,7 @@ def err_selector_element_not_lvalue : Error<
 def err_selector_element_type : Error<
   "selector element type %0 is not a valid object">;
 def err_collection_expr_type : Error<
-  "collection expression type %0 is not a valid object">;
+  "the type %0 is not a pointer to a fast-enumerable object">;
 def warn_collection_expr_type : Warning<
   "collection expression type %0 may not respond to %1">;
 
index 1a989a14464c7cdeed2135bbfdfaad58e254c158..9e5400c5f2ed292ca48de50d67b0f200b363bf4c 100644 (file)
@@ -26,12 +26,12 @@ typedef struct objc_object {
 
         int i=0;
         for (int * elem in elem) // expected-error {{selector element type 'int *' is not a valid object}} \
-                                   expected-error {{collection expression type 'int *' is not a valid object}}
+                                   expected-error {{the type 'int *' is not a pointer to a fast-enumerable object}}
            ++i;
         for (i in elem)  // expected-error {{use of undeclared identifier 'elem'}} \
                            expected-error {{selector element type 'int' is not a valid object}}
            ++i;
-        for (id se in i) // expected-error {{collection expression type 'int' is not a valid object}} 
+        for (id se in i) // expected-error {{the type 'int' is not a pointer to a fast-enumerable object}} 
            ++i;
 }
 @end
index ff72858afd3f25c71c3f49efe9f606a336158e0f..7575f7ad1a8f028cf0c23cae6abaf9cc32a63399 100644 (file)
@@ -38,20 +38,20 @@ template<typename T> void eat(T);
 template<typename E, typename T>
 void fast_enumeration_test(T collection) {
   for (E element in collection) { // expected-error{{selector element type 'int' is not a valid object}} \
-    // expected-error{{collection expression type 'vector' is not a valid object}}
+    // expected-error{{the type 'vector' is not a pointer to a fast-enumerable object}}
     eat(element);
   }
 
   E element;
   for (element in collection) // expected-error{{selector element type 'int' is not a valid object}} \
-    // expected-error{{collection expression type 'vector' is not a valid object}}
+    // expected-error{{the type 'vector' is not a pointer to a fast-enumerable object}}
     eat(element);
 
-  for (NSString *str in collection) // expected-error{{collection expression type 'vector' is not a valid object}}
+  for (NSString *str in collection) // expected-error{{the type 'vector' is not a pointer to a fast-enumerable object}}
     eat(str);
 
   NSString *str;
-  for (str in collection) // expected-error{{collection expression type 'vector' is not a valid object}}
+  for (str in collection) // expected-error{{the type 'vector' is not a pointer to a fast-enumerable object}}
     eat(str);
 }