[clang] [clang-tools-extra] Revert "[clang] Compute accurate begin location for CallExpr with exp… (PR #126789)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 11 12:04:47 PST 2025
https://github.com/R-Goc created https://github.com/llvm/llvm-project/pull/126789
…licit object parameter (#117841)"
This reverts commit 9ccde12f5eeb91152900082a2ae839e2a9702b31 Because of https://github.com/llvm/llvm-project/issues/126720.
>From f09de04d28c03977d1e6b1dab9c552e511bcbc73 Mon Sep 17 00:00:00 2001
From: R-Goc <ryszardgoc at gmail.com>
Date: Tue, 11 Feb 2025 21:03:01 +0100
Subject: [PATCH] Revert "[clang] Compute accurate begin location for CallExpr
with explicit object parameter (#117841)"
This reverts commit 9ccde12f5eeb91152900082a2ae839e2a9702b31.
---
clang-tools-extra/clangd/unittests/XRefsTests.cpp | 10 ----------
clang/lib/AST/Expr.cpp | 8 --------
clang/lib/Sema/SemaOverload.cpp | 2 +-
clang/test/AST/ast-dump-cxx2b-deducing-this.cpp | 4 ++--
4 files changed, 3 insertions(+), 21 deletions(-)
diff --git a/clang-tools-extra/clangd/unittests/XRefsTests.cpp b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
index 7d824d659ad2c..d393c72974d44 100644
--- a/clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1019,15 +1019,6 @@ TEST(LocateSymbol, All) {
void *Value;
void *getPointer() const { return Info::get^Pointer(Value); }
};
- )cpp",
- R"cpp(// Deducing this
- struct S {
- int bar(this S&);
- };
- void foo() {
- S [[waldo]];
- int x = wa^ldo.bar();
- }
)cpp"};
for (const char *Test : Tests) {
Annotations T(Test);
@@ -1044,7 +1035,6 @@ TEST(LocateSymbol, All) {
TU.Code = std::string(T.code());
TU.ExtraArgs.push_back("-xobjective-c++");
- TU.ExtraArgs.push_back("-std=c++23");
auto AST = TU.build();
auto Results = locateSymbolAt(AST, T.point());
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 5331357b5d1fe..5084b531ef37e 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -1638,19 +1638,11 @@ SourceLocation CallExpr::getBeginLoc() const {
if (const auto *OCE = dyn_cast<CXXOperatorCallExpr>(this))
return OCE->getBeginLoc();
- if (const auto *Method =
- dyn_cast_if_present<const CXXMethodDecl>(getCalleeDecl());
- Method && Method->isExplicitObjectMemberFunction()) {
- assert(getNumArgs() > 0 && getArg(0));
- return getArg(0)->getBeginLoc();
- }
-
SourceLocation begin = getCallee()->getBeginLoc();
if (begin.isInvalid() && getNumArgs() > 0 && getArg(0))
begin = getArg(0)->getBeginLoc();
return begin;
}
-
SourceLocation CallExpr::getEndLoc() const {
if (const auto *OCE = dyn_cast<CXXOperatorCallExpr>(this))
return OCE->getEndLoc();
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index 34c287926b1d7..f9f2b1dfa5f5a 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -15606,7 +15606,7 @@ ExprResult Sema::BuildCallToMemberFunction(Scope *S, Expr *MemExprE,
// Build the actual expression node.
ExprResult FnExpr =
CreateFunctionRefExpr(*this, Method, FoundDecl, MemExpr,
- HadMultipleCandidates, MemExpr->getExprLoc());
+ HadMultipleCandidates, MemExpr->getBeginLoc());
if (FnExpr.isInvalid())
return ExprError();
diff --git a/clang/test/AST/ast-dump-cxx2b-deducing-this.cpp b/clang/test/AST/ast-dump-cxx2b-deducing-this.cpp
index 1b385e0fc3331..04cff07376885 100644
--- a/clang/test/AST/ast-dump-cxx2b-deducing-this.cpp
+++ b/clang/test/AST/ast-dump-cxx2b-deducing-this.cpp
@@ -9,7 +9,7 @@ int main() {
S s;
int x = s.f();
// CHECK: CallExpr 0x{{[^ ]*}} <col:11, col:15> 'int
- // CHECK-NEXT: |-ImplicitCastExpr 0x{{[^ ]*}} <col:13> 'int (*)(S &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | `-DeclRefExpr 0x{{[^ ]*}} <col:13> 'int (S &)' lvalue CXXMethod 0x{{[^ ]*}} 'f' 'int (S &)'
+ // CHECK-NEXT: |-ImplicitCastExpr 0x{{[^ ]*}} <col:11> 'int (*)(S &)' <FunctionToPointerDecay>
+ // CHECK-NEXT: | `-DeclRefExpr 0x{{[^ ]*}} <col:11> 'int (S &)' lvalue CXXMethod 0x{{[^ ]*}} 'f' 'int (S &)'
}
}
More information about the cfe-commits
mailing list