Make value kind based on the return type of the getter, not
property type, for when getter may be a reference type.
// rdar://10188258 revised.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141966 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 3818e3d..dca716c 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -7205,15 +7205,15 @@
       VK = Expr::getValueKindForType(GetterMethod->getResultType());
     }
     else {
+      // lvalue-ness of an explicit property is determined by
+      // getter type.
       Diag(PRE->getLocation(), diag::err_getter_not_found)
             << PRE->getBase()->getType();
     }
   }
   else {
-    // lvalue-ness of an explicit property is determined by
-    // property type.
-    ObjCPropertyDecl *PDecl = PRE->getExplicitProperty();
-    VK = Expr::getValueKindForType(PDecl->getType());
+    QualType ResT = PRE->getGetterResultType();
+     VK = Expr::getValueKindForType(ResT);
   }
     
   E = ImplicitCastExpr::Create(Context, T, CK_GetObjCProperty,