diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2010-12-22 19:46:35 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-12-22 19:46:35 +0000 |
| commit | 0f0b302ffe8e64e93ad3b428523a244a1bcc044f (patch) | |
| tree | 7b38965f35168a93ec0afb1d0930b00e1bb59d3b /clang/lib/Sema/SemaExprObjC.cpp | |
| parent | d161a8570021d6c3e0ea68fd18ea0526eea73107 (diff) | |
| download | bcm5719-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.cpp | 15 |
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(); } |

