On Oct 28, 2011, at 1:06 PM, Fariborz Jahanian wrote: > Author: fjahanian > Date: Fri Oct 28 15:06:07 2011 > New Revision: 143219 > > URL: http://llvm.org/viewvc/llvm-project?rev=143219&view=rev > Log: > objective-c arc: type-casting of an objc pointer to > an rvalue retainable object type with life-time qualifier has no > effect and wil be diagnosed as error. // rdar://10244607 > > Added: > cfe/trunk/test/SemaObjC/arc-objc-lifetime.m > Modified: > cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td > cfe/trunk/lib/Sema/SemaExprObjC.cpp > cfe/trunk/test/SemaObjC/arc-unavailable-for-weakref.m > cfe/trunk/test/SemaObjCXX/arc-unavailable-for-weakref.mm > > Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=143219&r1=143218&r2=143219&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Fri Oct 28 15:06:07 > 2011 > @@ -3042,6 +3042,9 @@ > "%select{%2|a non-Objective-C pointer type %2|a block pointer|" > "an Objective-C pointer|an indirect pointer to an Objective-C pointer}1" > " to %3 is disallowed with ARC">; > +def err_arc_nolifetime_behavior : Error< > + "casting expression of type %1 to type %0 with qualified lifetime" > + "will not change object lifetime">;
We use the term "ownership" externally; I just haven't changed the name internally everywhere. Also, what do you think about this wording? error: explicit ownership qualifier on cast result would have no effect > + if ((castACTC == ACTC_retainable) && > + isa<AttributedType>(castType) && > + (castType.getObjCLifetime() != Qualifiers::OCL_None) && > + (CCK == CCK_CStyleCast || CCK == CCK_OtherCast) && I don't think the CCK restriction is meaningful. I know it's kindof marginal, but please do look through ParenTypes and other AttributedTypes here. Also, AttributedTypes are not necessarily only ownership attributes. Also also, please add a comment explaining that you're intentionally looking at type sugar and that you don't want to look through certain kinds of sugar. I don't know if it's currently possible to get a good test case for other AttributedTypes, but (__strong NSString(*)) is a good test case for ParenTypes. John. _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits