rename getProtocols -> getProtocol, as it only returns a single
protocol.  Simplify some code to use unconditional form of the
protocol access list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53832 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h
index 03171b8..e35f0aa 100644
--- a/include/clang/AST/Type.h
+++ b/include/clang/AST/Type.h
@@ -1130,9 +1130,8 @@
   /// interface type, or 0 if there are none.
   inline unsigned getNumProtocols() const;
   
-  /// getProtocols - Return the specified qualifying protocol.
-  inline ObjCProtocolDecl *getProtocols(unsigned i) const;
-
+  /// getProtocol - Return the specified qualifying protocol.
+  inline ObjCProtocolDecl *getProtocol(unsigned i) const;
   
   
   virtual void getAsStringInternal(std::string &InnerString) const;
@@ -1162,7 +1161,7 @@
   friend class ASTContext;  // ASTContext creates these.
 public:
   
-  ObjCProtocolDecl *getProtocols(unsigned i) const {
+  ObjCProtocolDecl *getProtocol(unsigned i) const {
     return Protocols[i];
   }
   unsigned getNumProtocols() const {
@@ -1207,9 +1206,9 @@
   return 0;
 }
 
-/// getProtocols - Return the specified qualifying protocol.
-inline ObjCProtocolDecl *ObjCInterfaceType::getProtocols(unsigned i) const {
-  return cast<ObjCQualifiedInterfaceType>(this)->getProtocols(i);
+/// getProtocol - Return the specified qualifying protocol.
+inline ObjCProtocolDecl *ObjCInterfaceType::getProtocol(unsigned i) const {
+  return cast<ObjCQualifiedInterfaceType>(this)->getProtocol(i);
 }
   
   
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 13f7ff9..9813acb 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -654,13 +654,10 @@
       return new ObjCPropertyRefExpr(PD, PD->getType(), MemberLoc, BaseExpr);
     
     // Lastly, check protocols on qualified interfaces.
-    if (const ObjCQualifiedInterfaceType *QIT = 
-          dyn_cast<ObjCQualifiedInterfaceType>(IFTy)) {
-      for (unsigned i = 0; i != QIT->getNumProtocols(); ++i)
-        if (ObjCPropertyDecl *PD =
-              QIT->getProtocols(i)->FindPropertyDeclaration(&Member))
-          return new ObjCPropertyRefExpr(PD, PD->getType(), MemberLoc,BaseExpr);
-    }
+    for (ObjCInterfaceType::qual_iterator I = IFTy->qual_begin(),
+         E = IFTy->qual_end(); I != E; ++I)
+      if (ObjCPropertyDecl *PD = (*I)->FindPropertyDeclaration(&Member))
+        return new ObjCPropertyRefExpr(PD, PD->getType(), MemberLoc, BaseExpr);
   }
   
   // Handle 'field access' to vectors, such as 'V.xx'.
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp
index abbc766..e8830bc 100644
--- a/lib/Sema/SemaExprObjC.cpp
+++ b/lib/Sema/SemaExprObjC.cpp
@@ -284,7 +284,7 @@
       if (!Method) {
         // search protocols
         for (unsigned i = 0; i < QIT->getNumProtocols(); i++) {
-          ObjCProtocolDecl *PDecl = QIT->getProtocols(i);
+          ObjCProtocolDecl *PDecl = QIT->getProtocol(i);
           if (PDecl && (Method = PDecl->lookupInstanceMethod(Sel)))
             break;
         }