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,