[cfe-commits] r100129 - in /cfe/trunk: lib/AST/ASTContext.cpp test/SemaObjC/block-type-safety.m

Ted Kremenek kremenek at apple.com
Mon Apr 5 17:05:16 PDT 2010


On Apr 1, 2010, at 12:50 PM, Fariborz Jahanian wrote:

> Author: fjahanian
> Date: Thu Apr  1 14:50:22 2010
> New Revision: 100129
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=100129&view=rev
> Log:
> Relax the typesafty rules of block pointers types which
> take'id' or return 'id' in their type. Fixes radar 7814131.
> 
> Modified:
>    cfe/trunk/lib/AST/ASTContext.cpp
>    cfe/trunk/test/SemaObjC/block-type-safety.m
> 
> Modified: cfe/trunk/lib/AST/ASTContext.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=100129&r1=100128&r2=100129&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/ASTContext.cpp (original)
> +++ cfe/trunk/lib/AST/ASTContext.cpp Thu Apr  1 14:50:22 2010
> @@ -4136,14 +4136,15 @@
> bool ASTContext::canAssignObjCInterfacesInBlockPointer(
>                                          const ObjCObjectPointerType *LHSOPT,
>                                          const ObjCObjectPointerType *RHSOPT) {
> -  if (RHSOPT->isObjCBuiltinType())
> +  if (RHSOPT->isObjCBuiltinType() || 
> +      LHSOPT->isObjCIdType() || LHSOPT->isObjCQualifiedIdType())
>     return true;

Hi Fariborz,

I understand adding 'LHSOpt->isObjCIdType()', but not the 'LHSOpt->isObjCQualifiedIdType()'.  Is this really what we want?  Doesn't this mean that we unconditionally accept the assignment, even if the RHS doesn't conform to the specified protocols?


> 
>   if (LHSOPT->isObjCBuiltinType()) {
>     return RHSOPT->isObjCBuiltinType() || RHSOPT->isObjCQualifiedIdType();
>   }
> 
> -  if (LHSOPT->isObjCQualifiedIdType() || RHSOPT->isObjCQualifiedIdType())
> +  if (RHSOPT->isObjCQualifiedIdType())
>     return ObjCQualifiedIdTypesAreCompatible(QualType(LHSOPT,0),
>                                              QualType(RHSOPT,0),
>                                              false);

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20100405/9e73ad92/attachment.html>


More information about the cfe-commits mailing list