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);

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to