Improve the diagnostic for -Wcustom-atomic-properties. Suggestion by Fariborz!
llvm-svn: 124620
This commit is contained in:
parent
c30c39982d
commit
b5b5a59f18
|
@ -387,7 +387,7 @@ def warn_atomic_property_rule : Warning<
|
|||
"writable atomic property %0 cannot pair a synthesized setter/getter "
|
||||
"with a user defined setter/getter">;
|
||||
def warn_default_atomic_custom_getter_setter : Warning<
|
||||
"atomic by default property %0 has a user defined setter/getter "
|
||||
"atomic by default property %0 has a user defined %select{getter|setter}1 "
|
||||
"(property should be marked 'atomic' if this is intended)">,
|
||||
InGroup<CustomAtomic>, DefaultIgnore;
|
||||
def err_use_continuation_class : Error<
|
||||
|
|
|
@ -1096,13 +1096,13 @@ Sema::AtomicPropertySetterGetterRules (ObjCImplDecl* IMPDecl,
|
|||
if (GetterMethod) {
|
||||
Diag(GetterMethod->getLocation(),
|
||||
diag::warn_default_atomic_custom_getter_setter)
|
||||
<< Property->getIdentifier();
|
||||
<< Property->getIdentifier() << 0;
|
||||
Diag(Property->getLocation(), diag::note_property_declare);
|
||||
}
|
||||
if (SetterMethod) {
|
||||
Diag(SetterMethod->getLocation(),
|
||||
diag::warn_default_atomic_custom_getter_setter)
|
||||
<< Property->getIdentifier();
|
||||
<< Property->getIdentifier() << 1;
|
||||
Diag(Property->getLocation(), diag::note_property_declare);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,16 @@
|
|||
@end
|
||||
|
||||
@implementation Foo
|
||||
-(Foo*)myProp {return 0;} // expected-warning {{atomic by default property 'myProp' has a user defined setter/getter (property should be marked 'atomic' if this is intended)}}
|
||||
-(void)setMyProp:(Foo*)e {} // expected-warning {{atomic by default property 'myProp' has a user defined setter/getter (property should be marked 'atomic' if this is intended)}}
|
||||
-(Foo*)myProp {return 0;} // expected-warning {{atomic by default property 'myProp' has a user defined getter (property should be marked 'atomic' if this is intended)}}
|
||||
-(void)setMyProp:(Foo*)e {} // expected-warning {{atomic by default property 'myProp' has a user defined setter (property should be marked 'atomic' if this is intended)}}
|
||||
@end
|
||||
|
||||
@interface Foo2 {
|
||||
Foo *myProp;
|
||||
}
|
||||
@property (assign) Foo *myProp;
|
||||
@end
|
||||
|
||||
@implementation Foo2
|
||||
@synthesize myProp; // no warnings.
|
||||
@end
|
||||
|
|
Loading…
Reference in New Issue