diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-31 23:20:03 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-31 23:20:03 +0000 |
| commit | b5b5a59f185876899e94f29391331425c084347b (patch) | |
| tree | 279d11d85cf392aebbacfbd9200600ddfcbd00ae /clang | |
| parent | c30c39982d426062543b44e20da0dcf627fe6a72 (diff) | |
| download | bcm5719-llvm-b5b5a59f185876899e94f29391331425c084347b.tar.gz bcm5719-llvm-b5b5a59f185876899e94f29391331425c084347b.zip | |
Improve the diagnostic for -Wcustom-atomic-properties. Suggestion by Fariborz!
llvm-svn: 124620
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.td | 2 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaObjCProperty.cpp | 4 | ||||
| -rw-r--r-- | clang/test/SemaObjC/custom-atomic-property.m | 14 |
3 files changed, 15 insertions, 5 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index fd2f69b549b..76045af1a8c 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -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< diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp index 2f5be478065..b086ca75140 100644 --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/lib/Sema/SemaObjCProperty.cpp @@ -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); } } diff --git a/clang/test/SemaObjC/custom-atomic-property.m b/clang/test/SemaObjC/custom-atomic-property.m index cf3d473849f..f80119e1490 100644 --- a/clang/test/SemaObjC/custom-atomic-property.m +++ b/clang/test/SemaObjC/custom-atomic-property.m @@ -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 |

