https://github.com/ckandeler created https://github.com/llvm/llvm-project/pull/135620
None >From 6fb676cec0f907658339708ee17a9e73ea8b2cc7 Mon Sep 17 00:00:00 2001 From: Christian Kandeler <christian.kande...@qt.io> Date: Mon, 14 Apr 2025 14:13:41 +0200 Subject: [PATCH] [clangd] Support operators new and delete in textDocument/references --- clang-tools-extra/clangd/unittests/XRefsTests.cpp | 10 +++++++++- clang/lib/Index/IndexBody.cpp | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/clangd/unittests/XRefsTests.cpp b/clang-tools-extra/clangd/unittests/XRefsTests.cpp index 693e965e78a96..1892f87c8e82a 100644 --- a/clang-tools-extra/clangd/unittests/XRefsTests.cpp +++ b/clang-tools-extra/clangd/unittests/XRefsTests.cpp @@ -2303,7 +2303,15 @@ TEST(FindReferences, WithinAST) { bool $decl[[operator]]"" _u^dl(unsigned long long value); bool x = $(x)[[1_udl]]; )cpp", - }; + R"cpp( + struct S { + public: + static void $decl(S)[[operator]] delete(void *); + static void deleteObject(S *S) { + $(S::deleteObject)[[de^lete]] S; + } + }; + )cpp"}; for (const char *Test : Tests) checkFindRefs(Test); } diff --git a/clang/lib/Index/IndexBody.cpp b/clang/lib/Index/IndexBody.cpp index 5e69987820730..2ed20df22bda0 100644 --- a/clang/lib/Index/IndexBody.cpp +++ b/clang/lib/Index/IndexBody.cpp @@ -153,6 +153,20 @@ class BodyIndexer : public RecursiveASTVisitor<BodyIndexer> { ParentDC); } + bool VisitCXXNewExpr(CXXNewExpr *E) { + if (E->isGlobalNew() || !E->getOperatorNew()) + return true; + return IndexCtx.handleReference(E->getOperatorNew(), E->getBeginLoc(), + Parent, ParentDC); + } + + bool VisitCXXDeleteExpr(CXXDeleteExpr *E) { + if (E->isGlobalDelete() || !E->getOperatorDelete()) + return true; + return IndexCtx.handleReference(E->getOperatorDelete(), E->getBeginLoc(), + Parent, ParentDC); + } + bool VisitLabelStmt(LabelStmt *S) { if (IndexCtx.shouldIndexFunctionLocalSymbols()) return IndexCtx.handleDecl(S->getDecl()); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits