summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2011-10-08 17:45:33 +0000
committerFariborz Jahanian <fjahanian@apple.com>2011-10-08 17:45:33 +0000
commit9059124b41f533b2d324b038954f2f34bb77791e (patch)
tree965fd59c5aa617024eb5875c1d046633f1b84cee
parentec173a5c92cb6703460eca346102b3723e2effa7 (diff)
downloadbcm5719-llvm-9059124b41f533b2d324b038954f2f34bb77791e.tar.gz
bcm5719-llvm-9059124b41f533b2d324b038954f2f34bb77791e.zip
objc: Do not warn about mismatch on Super's readonly property attribute,
related to a readwrite property, and Sub's readwrite property. // rdar://9396329 llvm-svn: 141497
-rw-r--r--clang/lib/Sema/SemaObjCProperty.cpp2
-rw-r--r--clang/test/SemaObjC/arc-property-decl-attrs.m14
2 files changed, 15 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp
index 7eb552c84a7..727c7b8b64c 100644
--- a/clang/lib/Sema/SemaObjCProperty.cpp
+++ b/clang/lib/Sema/SemaObjCProperty.cpp
@@ -899,7 +899,7 @@ Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property,
!= (SAttr & ObjCPropertyDecl::OBJC_PR_copy))
Diag(Property->getLocation(), diag::warn_property_attribute)
<< Property->getDeclName() << "copy" << inheritedName;
- else {
+ else if (!(SAttr & ObjCPropertyDecl::OBJC_PR_readonly)){
unsigned CAttrRetain =
(CAttr &
(ObjCPropertyDecl::OBJC_PR_retain | ObjCPropertyDecl::OBJC_PR_strong));
diff --git a/clang/test/SemaObjC/arc-property-decl-attrs.m b/clang/test/SemaObjC/arc-property-decl-attrs.m
index cc70780b7b8..1386241dd73 100644
--- a/clang/test/SemaObjC/arc-property-decl-attrs.m
+++ b/clang/test/SemaObjC/arc-property-decl-attrs.m
@@ -65,3 +65,17 @@
@property(unsafe_unretained) __weak id y; // expected-error {{property attributes 'unsafe_unretained' and 'weak' are mutually exclusive}}
@property(unsafe_unretained) __autoreleasing id z; // expected-error {{unsafe_unretained property 'z' may not also be declared __autoreleasing}}
@end
+
+// rdar://9396329
+@interface Super
+@property (readonly, retain) id foo;
+@property (readonly, weak) id fee;
+@property (readonly, strong) id frr;
+@end
+
+@interface Bugg : Super
+@property (readwrite) id foo;
+@property (readwrite) id fee;
+@property (readwrite) id frr;
+@end
+
OpenPOWER on IntegriCloud