]> granicus.if.org Git - clang/commitdiff
Improve source-location information for implicitly-generated member call expressions
authorDouglas Gregor <dgregor@apple.com>
Thu, 12 Nov 2009 15:31:47 +0000 (15:31 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 12 Nov 2009 15:31:47 +0000 (15:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86989 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ExprCXX.h
lib/AST/ExprCXX.cpp
lib/Sema/SemaExprCXX.cpp

index 5931a3fcf984ff49035a023ef0472da5f1e83bff..9e6fd4fd065b83d58e2e4e241415ab3ffb62db20 100644 (file)
@@ -95,6 +95,8 @@ public:
   /// operation would return "x".
   Expr *getImplicitObjectArgument();
 
+  virtual SourceRange getSourceRange() const;
+  
   static bool classof(const Stmt *T) {
     return T->getStmtClass() == CXXMemberCallExprClass;
   }
index 7c6fc41ef12bab96f656e76e948feb4d634b079e..0ba4608ee198ad32b2d5d3ff41666d94dcd8d8cc 100644 (file)
@@ -323,6 +323,14 @@ Expr *CXXMemberCallExpr::getImplicitObjectArgument() {
   return 0;
 }
 
+SourceRange CXXMemberCallExpr::getSourceRange() const {
+  SourceLocation LocStart = getCallee()->getLocStart();
+  if (LocStart.isInvalid() && getNumArgs() > 0)
+    LocStart = getArg(0)->getLocStart();
+  return SourceRange(LocStart, getRParenLoc());
+}
+
+
 //===----------------------------------------------------------------------===//
 //  Named casts
 //===----------------------------------------------------------------------===//
index 94550e6f19208a3c493b3ad973bf9803c0cd59ba..964334b20bb070498b3a71981c0e72b19882bad4 100644 (file)
@@ -2120,7 +2120,7 @@ CXXMemberCallExpr *Sema::BuildCXXMemberCallExpr(Expr *Exp,
     CXXMemberCallExpr *CE =
       new (Context) CXXMemberCallExpr(Context, ME, 0, 0, 
                                       ResultType,
-                                      SourceLocation());
+                                      Exp->getLocEnd());
   return CE;
 }