aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangcodemodel/clangdfindreferences.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/clangcodemodel/clangdfindreferences.cpp')
-rw-r--r--src/plugins/clangcodemodel/clangdfindreferences.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/plugins/clangcodemodel/clangdfindreferences.cpp b/src/plugins/clangcodemodel/clangdfindreferences.cpp
index 8a2d3faaeff..b44fd41a828 100644
--- a/src/plugins/clangcodemodel/clangdfindreferences.cpp
+++ b/src/plugins/clangcodemodel/clangdfindreferences.cpp
@@ -21,9 +21,10 @@
#include <languageserverprotocol/lsptypes.h>
#include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/projectmanager.h>
#include <projectexplorer/projectnodes.h>
#include <projectexplorer/projecttree.h>
-#include <projectexplorer/session.h>
+#include <projectexplorer/projectmanager.h>
#include <texteditor/basefilefind.h>
@@ -71,7 +72,7 @@ public:
const Position linkAsPosition;
const QPointer<SearchResult> search;
const LinkHandler callback;
- QList<SearchResultItem> declDefItems;
+ SearchResultItems declDefItems;
bool openedExtraFileForLink = false;
bool declHasUsedTag = false;
bool recursiveCallDetected = false;
@@ -88,7 +89,7 @@ public:
const SearchResult *search,
const ReplacementData &replacementData,
const QString &newSymbolName,
- const QList<SearchResultItem> &checkedItems,
+ const SearchResultItems &checkedItems,
bool preserveCase);
void handleFindUsagesResult(const QList<Location> &locations);
void finishSearch();
@@ -142,7 +143,7 @@ ClangdFindReferences::ClangdFindReferences(ClangdClient *client, TextDocument *d
d->search->setAdditionalReplaceWidget(renameFilesCheckBox);
const auto renameHandler =
[search = d->search](const QString &newSymbolName,
- const QList<SearchResultItem> &checkedItems,
+ const SearchResultItems &checkedItems,
bool preserveCase) {
const auto replacementData = search->userData().value<ReplacementData>();
Private::handleRenameRequest(search, replacementData, newSymbolName, checkedItems,
@@ -150,7 +151,7 @@ ClangdFindReferences::ClangdFindReferences(ClangdClient *client, TextDocument *d
};
connect(d->search, &SearchResult::replaceButtonClicked, renameHandler);
}
- connect(d->search, &SearchResult::activated, [](const SearchResultItem& item) {
+ connect(d->search, &SearchResult::activated, [](const SearchResultItem &item) {
EditorManager::openEditorAtSearchResult(item);
});
if (d->search->isInteractive())
@@ -242,7 +243,7 @@ void ClangdFindReferences::Private::handleRenameRequest(
const SearchResult *search,
const ReplacementData &replacementData,
const QString &newSymbolName,
- const QList<SearchResultItem> &checkedItems,
+ const SearchResultItems &checkedItems,
bool preserveCase)
{
const Utils::FilePaths filePaths = BaseFileFind::replaceAll(newSymbolName, checkedItems,
@@ -390,7 +391,7 @@ static Usage::Tags getUsageType(const ClangdAstPath &path, const QString &search
void ClangdFindReferences::Private::addSearchResultsForFile(const FilePath &file,
const ReferencesFileData &fileData)
{
- QList<SearchResultItem> items;
+ SearchResultItems items;
qCDebug(clangdLog) << file << "has valid AST:" << fileData.ast.isValid();
const auto expectedDeclTypes = [this]() -> QStringList {
if (checkUnusedData)
@@ -451,7 +452,7 @@ void ClangdFindReferences::Private::addSearchResultsForFile(const FilePath &file
item.setContainingFunctionName(getContainingFunction(astPath, range).detail());
if (search->supportsReplace()) {
- const bool fileInSession = SessionManager::projectForFile(file);
+ const bool fileInSession = ProjectManager::projectForFile(file);
item.setSelectForReplacement(fileInSession);
if (fileInSession && file.baseName().compare(replacementData->oldSymbolName,
Qt::CaseInsensitive) == 0) {
@@ -594,6 +595,19 @@ static Usage::Tags getUsageType(const ClangdAstPath &path, const QString &search
tags |= Usage::Tag::Operator;
}
}
+ if (pathIt->kind() == "CXXMethod") {
+ const ClangdAstNode &classNode = *std::next(pathIt);
+ if (classNode.hasChild([&](const ClangdAstNode &n) {
+ if (n.kind() != "StaticAssert")
+ return false;
+ return n.hasChild([&](const ClangdAstNode &n) {
+ return n.arcanaContains("Q_PROPERTY"); }, true)
+ && n.hasChild([&](const ClangdAstNode &n) {
+ return n.arcanaContains(" " + searchTerm); }, true);
+ }, false)) {
+ tags |= Usage::Tag::MocInvokable;
+ }
+ }
return tags;
}
if (pathIt->kind() == "MemberInitializer")