On Mar 12, 2013, at 3:22 PM, Fariborz Jahanian <[email protected]> wrote:
> Author: fjahanian > Date: Tue Mar 12 17:22:38 2013 > New Revision: 176906 > > URL: http://llvm.org/viewvc/llvm-project?rev=176906&view=rev > Log: > Objective-C: In my last path, also check > for existence of user setter before > issuing the warning about non-synthesizable > property. // rdar://13388503 The warning is supposed to go away if the compiler can see the setter, is this right ? These cases still display the warning: 1) @interface B @property (readonly) id prop; @end @interface B() -(void)setProp:(id)x; @end @interface S : B @property (assign,readwrite) id prop; @end @implementation S @end 2) @interface B @property (readonly) id prop; @end @interface B(cat) @property (readwrite) id prop; @end @interface S : B @property (assign,readwrite) id prop; @end @implementation S @end Shouldn't the warning be suppressed ? -Argyrios > > Modified: > cfe/trunk/lib/Sema/SemaObjCProperty.cpp > cfe/trunk/test/SemaObjC/default-synthesize-3.m > > Modified: cfe/trunk/lib/Sema/SemaObjCProperty.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaObjCProperty.cpp?rev=176906&r1=176905&r2=176906&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaObjCProperty.cpp (original) > +++ cfe/trunk/lib/Sema/SemaObjCProperty.cpp Tue Mar 12 17:22:38 2013 > @@ -1589,7 +1589,8 @@ void Sema::DefaultSynthesizeProperties(S > ObjCPropertyDecl *PropInSuperClass = > SuperPropMap[Prop->getIdentifier()]; > if ((Prop->getPropertyAttributes() & > ObjCPropertyDecl::OBJC_PR_readwrite) && > (PropInSuperClass->getPropertyAttributes() & > - ObjCPropertyDecl::OBJC_PR_readonly)) { > + ObjCPropertyDecl::OBJC_PR_readonly) && > + !IMPDecl->getInstanceMethod(Prop->getSetterName())) { > Diag(Prop->getLocation(), diag::warn_no_autosynthesis_property) > << Prop->getIdentifier()->getName(); > Diag(PropInSuperClass->getLocation(), > diag::note_property_declare); > > Modified: cfe/trunk/test/SemaObjC/default-synthesize-3.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/default-synthesize-3.m?rev=176906&r1=176905&r2=176906&view=diff > ============================================================================== > --- cfe/trunk/test/SemaObjC/default-synthesize-3.m (original) > +++ cfe/trunk/test/SemaObjC/default-synthesize-3.m Tue Mar 12 17:22:38 2013 > @@ -44,6 +44,7 @@ __attribute ((objc_requires_property_def > @interface NSObject @end > @protocol Foo > @property (readonly) char isFoo; // expected-note {{property declared here}} > +@property (readonly) char isNotFree; > @end > > @interface Bar : NSObject <Foo> > @@ -53,6 +54,9 @@ __attribute ((objc_requires_property_def > - (char)isFoo { > return 0; > } > +- (char)isNotFree { > + return 0; > +} > @end > > @interface Baz : Bar > @@ -62,10 +66,17 @@ __attribute ((objc_requires_property_def > @property (readwrite) char isFoo; // expected-warning {{auto property > synthesis will not synthesize property 'isFoo' because it is 'readwrite' but > it will be synthesized 'readonly' via another property}} > @property char Property1; // expected-warning {{auto property synthesis will > not synthesize property 'Property1' because it cannot share an ivar with > another synthesized property}} > @property char Property2; > +@property (readwrite) char isNotFree; > @end > > @implementation Baz { > char _isFoo; > + char _isNotFree; > } > @synthesize Property2 = Property1; // expected-note {{property synthesized > here}} > + > +- (void) setIsNotFree : (char)Arg { > + _isNotFree = Arg; > +} > + > @end > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
