aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaExprObjC.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-04-11 07:51:10 +0000
committerChris Lattner <sabre@nondot.org>2010-04-11 07:51:10 +0000
commitb9d4fc1f54924a7b242fb763192a40c19fa6103d (patch)
tree72a0918d149fd2fabd8649602ef38fed3cbb501e /lib/Sema/SemaExprObjC.cpp
parent7f81652f97a69ae8b514893a69c0245253687e55 (diff)
actually the interface grossness in the previous patch was due to
typo correction. However, now that the code has been factored out of LookupMemberExpr, it can recurse to itself instead of to LookupMemberExpr! Remove grossness. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100958 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaExprObjC.cpp')
-rw-r--r--lib/Sema/SemaExprObjC.cpp18
1 files changed, 7 insertions, 11 deletions
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp
index 86d69388e2..327e294f36 100644
--- a/lib/Sema/SemaExprObjC.cpp
+++ b/lib/Sema/SemaExprObjC.cpp
@@ -294,11 +294,8 @@ ObjCMethodDecl *Sema::LookupPrivateInstanceMethod(Selector Sel,
/// objective C interface. This is a property reference expression.
Action::OwningExprResult Sema::
HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT,
- Expr *&BaseExpr, bool &IsArrow,
- DeclarationName MemberName,
- SourceLocation MemberLoc, SourceLocation OpLoc,
- CXXScopeSpec &SS, DeclPtrTy ObjCImpDecl) {
- assert(!IsArrow && "Should only be called with '.' expressions");
+ Expr *BaseExpr, DeclarationName MemberName,
+ SourceLocation MemberLoc) {
const ObjCInterfaceType *IFaceT = OPT->getInterfaceType();
ObjCInterfaceDecl *IFace = IFaceT->getDecl();
IdentifierInfo *Member = MemberName.getAsIdentifierInfo();
@@ -377,23 +374,22 @@ HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT,
LookupResult Res(*this, MemberName, MemberLoc, LookupOrdinaryName);
if (CorrectTypo(Res, 0, 0, IFace, false, OPT) &&
Res.getAsSingle<ObjCPropertyDecl>()) {
+ DeclarationName TypoResult = Res.getLookupName();
Diag(MemberLoc, diag::err_property_not_found_suggest)
- << MemberName << QualType(OPT, 0) << Res.getLookupName()
- << FixItHint::CreateReplacement(MemberLoc,
- Res.getLookupName().getAsString());
+ << MemberName << QualType(OPT, 0) << TypoResult
+ << FixItHint::CreateReplacement(MemberLoc, TypoResult.getAsString());
ObjCPropertyDecl *Property = Res.getAsSingle<ObjCPropertyDecl>();
Diag(Property->getLocation(), diag::note_previous_decl)
<< Property->getDeclName();
-
- return LookupMemberExpr(Res, BaseExpr, IsArrow, OpLoc, SS, ObjCImpDecl);
+ return HandleExprPropertyRefExpr(OPT, BaseExpr, TypoResult, MemberLoc);
}
+
Diag(MemberLoc, diag::err_property_not_found)
<< MemberName << QualType(OPT, 0);
if (Setter && !Getter)
Diag(Setter->getLocation(), diag::note_getter_unavailable)
<< MemberName << BaseExpr->getSourceRange();
return ExprError();
-
}