]> granicus.if.org Git - clang/commitdiff
Improve the diagnostic for -Wcustom-atomic-properties. Suggestion by Fariborz!
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 31 Jan 2011 23:20:03 +0000 (23:20 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 31 Jan 2011 23:20:03 +0000 (23:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124620 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaObjCProperty.cpp
test/SemaObjC/custom-atomic-property.m

index fd2f69b549b9a9de8b2eedb694bfa7ee45549f16..76045af1a8c74de5f804beb25a588e978a070041 100644 (file)
@@ -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<
index 2f5be47806501a85d9a83b99a091ab4b71d4e55d..b086ca751406371f13bf59c3e3149506d5faef96 100644 (file)
@@ -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);
       }
     }
index cf3d473849f549b9e25eac0caf3a5c5ad1113586..f80119e14903cb7be9b35ee2d1da886d3c6a4d77 100644 (file)
@@ -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