add forward definition protocols to the protocol list for a class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53864 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp
index 6880eec..c3c2426 100644
--- a/lib/Sema/SemaDeclObjC.cpp
+++ b/lib/Sema/SemaDeclObjC.cpp
@@ -137,11 +137,12 @@
       if (!RefPDecl)
         Diag(EndProtoLoc, diag::err_undef_protocolref,
              ProtocolNames[i]->getName(), ClassName->getName());
-      else if (RefPDecl->isForwardDecl())
-        Diag(EndProtoLoc, diag::warn_undef_protocolref,
-             ProtocolNames[i]->getName(), ClassName->getName());
-      else
+      else {
+        if (RefPDecl->isForwardDecl())
+          Diag(EndProtoLoc, diag::warn_undef_protocolref,
+               ProtocolNames[i]->getName(), ClassName->getName());
         RefProtos.push_back(RefPDecl);
+      }
     }
     if (!RefProtos.empty())
       IDecl->addReferencedProtocols(&RefProtos[0], RefProtos.size());
@@ -223,11 +224,12 @@
       if (!RefPDecl)
         Diag(ProtocolLoc, diag::err_undef_protocolref,
              ProtoRefNames[i]->getName(), ProtocolName->getName());
-      else if (RefPDecl->isForwardDecl())
-        Diag(ProtocolLoc, diag::warn_undef_protocolref,
-             ProtoRefNames[i]->getName(), ProtocolName->getName());
-      
-      PDecl->setReferencedProtocols(i, RefPDecl);
+      else {
+        if (RefPDecl->isForwardDecl())
+          Diag(ProtocolLoc, diag::warn_undef_protocolref,
+               ProtoRefNames[i]->getName(), ProtocolName->getName());
+        PDecl->setReferencedProtocols(i, RefPDecl);
+      }
     }
     PDecl->setLocEnd(EndProtoLoc);
   }
@@ -434,11 +436,12 @@
       if (!RefPDecl)
         Diag(CategoryLoc, diag::err_undef_protocolref,
              ProtoRefNames[i]->getName(), CategoryName->getName());
-      else if (RefPDecl->isForwardDecl())
-        Diag(CategoryLoc, diag::warn_undef_protocolref,
-             ProtoRefNames[i]->getName(), CategoryName->getName());
-      if (RefPDecl)
+      else {
+        if (RefPDecl->isForwardDecl())
+          Diag(CategoryLoc, diag::warn_undef_protocolref,
+               ProtoRefNames[i]->getName(), CategoryName->getName());
         RefProtocols.push_back(RefPDecl);
+      }
     }
     if (!RefProtocols.empty())
       CDecl->addReferencedProtocols(&RefProtocols[0], RefProtocols.size());