Limit type of foreach's element and collection to be a pointer to 
objc object type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45709 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/Sema.cpp b/Sema/Sema.cpp
index 8f340db..b33e782 100644
--- a/Sema/Sema.cpp
+++ b/Sema/Sema.cpp
@@ -33,7 +33,7 @@
       type->isObjcQualifiedIdType())
     return true;
   
-  while (type->isPointerType()) {
+  if (type->isPointerType()) {
     PointerType *pointerType = static_cast<PointerType*>(type.getTypePtr());
     type = pointerType->getPointeeType();
   }
diff --git a/test/Parser/objc-forcollection-neg-2.m b/test/Parser/objc-forcollection-neg-2.m
index 807efd9..ba870aa 100644
--- a/test/Parser/objc-forcollection-neg-2.m
+++ b/test/Parser/objc-forcollection-neg-2.m
@@ -30,7 +30,7 @@
         for (id el in self) 
            ++i;
 	MyList<P> ***p;
-        for (p in self) 
+        for (p in self)  // expected-error {{selector element is not of valid object type (its type is 'MyList<P> ***')}}
            ++i;
 
 }