summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprObjC.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-12-22 19:46:35 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-12-22 19:46:35 +0000
commit0f0b302ffe8e64e93ad3b428523a244a1bcc044f (patch)
tree7b38965f35168a93ec0afb1d0930b00e1bb59d3b /clang/lib/Sema/SemaExprObjC.cpp
parentd161a8570021d6c3e0ea68fd18ea0526eea73107 (diff)
downloadbcm5719-llvm-0f0b302ffe8e64e93ad3b428523a244a1bcc044f.tar.gz
bcm5719-llvm-0f0b302ffe8e64e93ad3b428523a244a1bcc044f.zip
Complain on missing property getter method only
if property-dot expression is decidedly an rvalue. // rdar://8155806. llvm-svn: 122430
Diffstat (limited to 'clang/lib/Sema/SemaExprObjC.cpp')
-rw-r--r--clang/lib/Sema/SemaExprObjC.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp
index bbb047990bb..f4c593b0dae 100644
--- a/clang/lib/Sema/SemaExprObjC.cpp
+++ b/clang/lib/Sema/SemaExprObjC.cpp
@@ -439,8 +439,15 @@ HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT,
if (Setter && DiagnoseUseOfDecl(Setter, MemberLoc))
return ExprError();
- if (Getter) {
- QualType PType = Getter->getSendResultType();
+ if (Getter || Setter) {
+ QualType PType;
+ if (Getter)
+ PType = Getter->getSendResultType();
+ else {
+ ParmVarDecl *ArgDecl = *Setter->param_begin();
+ PType = ArgDecl->getType();
+ }
+
ExprValueKind VK = VK_LValue;
ExprObjectKind OK = OK_ObjCProperty;
if (!getLangOptions().CPlusPlus && !PType.hasQualifiers() &&
@@ -476,9 +483,9 @@ HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT,
Diag(MemberLoc, diag::err_property_not_found)
<< MemberName << QualType(OPT, 0);
- if (Setter && !Getter)
+ if (Setter)
Diag(Setter->getLocation(), diag::note_getter_unavailable)
- << MemberName << BaseExpr->getSourceRange();
+ << MemberName << BaseExpr->getSourceRange();
return ExprError();
}
OpenPOWER on IntegriCloud