summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-01-31 23:20:03 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-01-31 23:20:03 +0000
commitb5b5a59f185876899e94f29391331425c084347b (patch)
tree279d11d85cf392aebbacfbd9200600ddfcbd00ae /clang
parentc30c39982d426062543b44e20da0dcf627fe6a72 (diff)
downloadbcm5719-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.td2
-rw-r--r--clang/lib/Sema/SemaObjCProperty.cpp4
-rw-r--r--clang/test/SemaObjC/custom-atomic-property.m14
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
OpenPOWER on IntegriCloud