Fix <rdar://problem/6574319> clang issues error on 'readonly' property with a defaul setter attribute.

Needed to make isPropertyReadonly() non-const (for this fix to compile). I imagine there's a way to retain the const-ness, however I have more important fish to fry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65562 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp
index b3644a5..cb35890 100644
--- a/lib/Sema/SemaDeclObjC.cpp
+++ b/lib/Sema/SemaDeclObjC.cpp
@@ -720,7 +720,7 @@
 /// for the property in the class and in its categories and implementations
 ///
 bool Sema::isPropertyReadonly(ObjCPropertyDecl *PDecl,
-                              ObjCInterfaceDecl *IDecl) const {
+                              ObjCInterfaceDecl *IDecl) {
   // by far the most common case.
   if (!PDecl->isReadOnly())
     return false;
@@ -758,6 +758,11 @@
         return false;
     }
   }
+  // Lastly, look through the implementation (if one is in scope).
+  if (ObjCImplementationDecl *ImpDecl = 
+        ObjCImplementations[IDecl->getIdentifier()])
+    if (ImpDecl->getInstanceMethod(PDecl->getSetterName()))
+      return false;
   return true;
 }