-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[clangd] Support operators new and delete in textDocument/references #135620
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-clangd @llvm/pr-subscribers-clang Author: Christian Kandeler (ckandeler) ChangesFull diff: https://github.com/llvm/llvm-project/pull/135620.diff 2 Files Affected:
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());
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/6/builds/8542 Here is the relevant piece of the build log for the reference
|
No description provided.