]> granicus.if.org Git - clang/commitdiff
actually the interface grossness in the previous patch was due to
authorChris Lattner <sabre@nondot.org>
Sun, 11 Apr 2010 07:51:10 +0000 (07:51 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 11 Apr 2010 07:51:10 +0000 (07:51 +0000)
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

lib/Sema/Sema.h
lib/Sema/SemaExpr.cpp
lib/Sema/SemaExprObjC.cpp

index 989215948b852e0ce201cb22ca5a4b57ec73a981..d6476be685fe114250ca8d45386004e916c514ec 100644 (file)
@@ -3847,10 +3847,9 @@ public:
 
   Action::OwningExprResult
   HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT,
-                            Expr *&BaseExpr, bool &IsArrow,
+                            Expr *BaseExpr,
                             DeclarationName MemberName,
-                            SourceLocation MemberLoc, SourceLocation OpLoc,
-                            CXXScopeSpec &SS, DeclPtrTy ObjCImpDecl);
+                            SourceLocation MemberLoc);
   
   virtual OwningExprResult ActOnClassPropertyRefExpr(
     IdentifierInfo &receiverName,
index c350bb9a7811c1489d10149511f97fc1e5fde799..c173705be55f226382fd21f775110ed331adc0b8 100644 (file)
@@ -3143,9 +3143,7 @@ Sema::LookupMemberExpr(LookupResult &R, Expr *&BaseExpr,
   if (!IsArrow)
     if (const ObjCObjectPointerType *OPT =
           BaseType->getAsObjCInterfacePointerType())
-      return HandleExprPropertyRefExpr(OPT, BaseExpr, IsArrow,
-                                       MemberName, MemberLoc,
-                                       OpLoc, SS, ObjCImpDecl);
+      return HandleExprPropertyRefExpr(OPT, BaseExpr, MemberName, MemberLoc);
 
   // Handle the following exceptional case (*Obj).isa.
   if (!IsArrow &&
index 86d69388e228abeed112c8ef7f22ac39d2f90d58..327e294f36d813a9fd76f7d7585988e7b728dba5 100644 (file)
@@ -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();
-
 }