summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-10-06 19:24:26 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-10-06 19:24:26 +0000
commit05a63ee197a1e226ada83334491b91b231324b87 (patch)
tree92cc5c16afb3ad517d732c62090ec51f5004af3b /clang/lib/Sema
parentba0f79af92f9a4ed19d58c81bd7d185f2263231a (diff)
downloadbcm5719-llvm-05a63ee197a1e226ada83334491b91b231324b87.tar.gz
bcm5719-llvm-05a63ee197a1e226ada83334491b91b231324b87.zip
[ObjC] Don't warn on readwrite properties with custom setters that
override readonly properties from protocols rdar://34192541 llvm-svn: 315093
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/SemaObjCProperty.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp
index 18f509caaa0..9c61d45158a 100644
--- a/clang/lib/Sema/SemaObjCProperty.cpp
+++ b/clang/lib/Sema/SemaObjCProperty.cpp
@@ -1599,7 +1599,11 @@ Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property,
// meaningless for readonly properties, so don't diagnose if the
// atomic property is 'readonly'.
checkAtomicPropertyMismatch(*this, SuperProperty, Property, false);
- if (Property->getSetterName() != SuperProperty->getSetterName()) {
+ // Readonly properties from protocols can be implemented as "readwrite"
+ // with a custom setter name.
+ if (Property->getSetterName() != SuperProperty->getSetterName() &&
+ !(SuperProperty->isReadOnly() &&
+ isa<ObjCProtocolDecl>(SuperProperty->getDeclContext()))) {
Diag(Property->getLocation(), diag::warn_property_attribute)
<< Property->getDeclName() << "setter" << inheritedName;
Diag(SuperProperty->getLocation(), diag::note_property_declare);
OpenPOWER on IntegriCloud