]> granicus.if.org Git - clang/commitdiff
add forward definition protocols to the protocol list for a class.
authorChris Lattner <sabre@nondot.org>
Mon, 21 Jul 2008 18:35:17 +0000 (18:35 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 21 Jul 2008 18:35:17 +0000 (18:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53864 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclObjC.cpp

index 6880eec9af6d89c45ffa8d92a971658d680fe17f..c3c2426bdc27a65789c9bda2b8ca30b9df5230a5 100644 (file)
@@ -137,11 +137,12 @@ Sema::DeclTy *Sema::ActOnStartClassInterface(
       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 @@ Sema::DeclTy *Sema::ActOnStartProtocolInterface(
       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 @@ Sema::DeclTy *Sema::ActOnStartCategoryInterface(
       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());