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