Author: arphaman Date: Thu Mar 30 08:33:51 2017 New Revision: 299078 URL: http://llvm.org/viewvc/llvm-project?rev=299078&view=rev Log: [Sema][ObjC] Avoid the "type of property does not match type of accessor" warning for methods that resemble the setters of readonly properties
rdar://30415679 Modified: cfe/trunk/lib/Sema/SemaObjCProperty.cpp cfe/trunk/test/SemaObjC/property-typecheck-1.m Modified: cfe/trunk/lib/Sema/SemaObjCProperty.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaObjCProperty.cpp?rev=299078&r1=299077&r2=299078&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaObjCProperty.cpp (original) +++ cfe/trunk/lib/Sema/SemaObjCProperty.cpp Thu Mar 30 08:33:51 2017 @@ -2185,12 +2185,9 @@ void Sema::ProcessPropertyDecl(ObjCPrope DiagnosePropertyAccessorMismatch(property, GetterMethod, property->getLocation()); - if (SetterMethod) { - ObjCPropertyDecl::PropertyAttributeKind CAttr = - property->getPropertyAttributes(); - if ((!(CAttr & ObjCPropertyDecl::OBJC_PR_readonly)) && - Context.getCanonicalType(SetterMethod->getReturnType()) != - Context.VoidTy) + if (!property->isReadOnly() && SetterMethod) { + if (Context.getCanonicalType(SetterMethod->getReturnType()) != + Context.VoidTy) Diag(SetterMethod->getLocation(), diag::err_setter_type_void); if (SetterMethod->param_size() != 1 || !Context.hasSameUnqualifiedType( Modified: cfe/trunk/test/SemaObjC/property-typecheck-1.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/property-typecheck-1.m?rev=299078&r1=299077&r2=299078&view=diff ============================================================================== --- cfe/trunk/test/SemaObjC/property-typecheck-1.m (original) +++ cfe/trunk/test/SemaObjC/property-typecheck-1.m Thu Mar 30 08:33:51 2017 @@ -78,6 +78,11 @@ typedef void (F)(void); - (NSMutableArray*) pieces; // expected-note 2 {{declared here}} - (NSArray*) first; + +// Don't warn about setter-like methods for readonly properties. +- (void)setFirst:(char)val; +- (void)setPieces:(char)val; + @end @interface Class2 { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits