]> granicus.if.org Git - clang/commitdiff
objc2's foreach statement's selector type can be
authorFariborz Jahanian <fjahanian@apple.com>
Fri, 14 Aug 2009 21:53:27 +0000 (21:53 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Fri, 14 Aug 2009 21:53:27 +0000 (21:53 +0000)
a block pointer too.

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

lib/Sema/SemaStmt.cpp
test/SemaObjC/blocks.m

index 65611f2e5850998d52b82710a20ee72b77e9ee2c..f66ee1e30f2e2c0697902584698e293ac0ebb162 100644 (file)
@@ -693,7 +693,8 @@ Sema::ActOnObjCForCollectionStmt(SourceLocation ForLoc,
 
       FirstType = static_cast<Expr*>(First)->getType();        
     }
-    if (!FirstType->isObjCObjectPointerType())
+    if (!FirstType->isObjCObjectPointerType() && 
+        !FirstType->isBlockPointerType())
         Diag(ForLoc, diag::err_selector_element_type)
           << FirstType << First->getSourceRange();
   }
index 6dab289ae9f223322dd46b0094c6fc26ce04eca2..aecdfd1f5e4e7912905064776b68fc6c13cc0c82 100644 (file)
@@ -44,3 +44,14 @@ void foo8() {
   P = ^itf() {};          // expected-error {{Objective-C interface type 'itf' cannot be returned by value}}
   P = ^itf{};             // expected-error {{Objective-C interface type 'itf' cannot be returned by value}}
 }
+
+
+int foo9() {
+  typedef void (^DVTOperationGroupScheduler)();
+  id _suboperationSchedulers;
+
+  for (DVTOperationGroupScheduler scheduler in _suboperationSchedulers) {
+            ;
+        }
+
+}