mirror of https://github.com/microsoft/clang.git
[ObjC] Don't warn on readwrite properties with custom setters that
override readonly properties from protocols rdar://34192541 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315093 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
172bca309c
commit
0cbff250f6
|
@ -1599,7 +1599,11 @@ Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property,
|
|||
// meaningless for readonly properties, so don't diagnose if the
|
||||
// atomic property is 'readonly'.
|
||||
checkAtomicPropertyMismatch(*this, SuperProperty, Property, false);
|
||||
if (Property->getSetterName() != SuperProperty->getSetterName()) {
|
||||
// Readonly properties from protocols can be implemented as "readwrite"
|
||||
// with a custom setter name.
|
||||
if (Property->getSetterName() != SuperProperty->getSetterName() &&
|
||||
!(SuperProperty->isReadOnly() &&
|
||||
isa<ObjCProtocolDecl>(SuperProperty->getDeclContext()))) {
|
||||
Diag(Property->getLocation(), diag::warn_property_attribute)
|
||||
<< Property->getDeclName() << "setter" << inheritedName;
|
||||
Diag(SuperProperty->getLocation(), diag::note_property_declare);
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
|
||||
// rdar://34192541
|
||||
|
||||
@class NSString;
|
||||
|
||||
@protocol MyProtocol
|
||||
@property (nonatomic, strong, readonly) NSString *myString;
|
||||
@end
|
||||
|
||||
@interface MyClass <MyProtocol>
|
||||
// Don't warn about this setter:
|
||||
@property (nonatomic, strong, setter=setMYString:) NSString *myString;
|
||||
|
||||
|
||||
@property (nonatomic, strong, readonly) NSString *overridenInClass; // expected-note {{property declared here}}
|
||||
@end
|
||||
|
||||
@interface MySubClass: MyClass
|
||||
@property (nonatomic, strong, setter=setMYOverride:) NSString *overridenInClass;
|
||||
// expected-warning@-1 {{'setter' attribute on property 'overridenInClass' does not match the property inherited from 'MyClass'}}
|
||||
@end
|
Loading…
Reference in New Issue