CppEditor: FilePath-ify SymbolSearcher

Change-Id: Iff29c4c6287d12a361174264332e8734e914050a
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2023-11-06 16:03:49 +01:00
parent 24d4cb6576
commit 0dbd951654
4 changed files with 12 additions and 8 deletions

View File

@@ -30,10 +30,10 @@ namespace CppEditor {
static Q_LOGGING_CATEGORY(indexerLog, "qtc.cppeditor.indexer", QtWarningMsg) static Q_LOGGING_CATEGORY(indexerLog, "qtc.cppeditor.indexer", QtWarningMsg)
SymbolSearcher::SymbolSearcher(const SymbolSearcher::Parameters &parameters, SymbolSearcher::SymbolSearcher(const SymbolSearcher::Parameters &parameters,
const QSet<QString> &fileNames) const QSet<FilePath> &filePaths)
: m_snapshot(CppModelManager::snapshot()) : m_snapshot(CppModelManager::snapshot())
, m_parameters(parameters) , m_parameters(parameters)
, m_fileNames(fileNames) , m_filePaths(filePaths)
{} {}
namespace { namespace {
@@ -261,7 +261,7 @@ void SymbolSearcher::runSearch(QPromise<SearchResultItem> &promise)
promise.suspendIfRequested(); promise.suspendIfRequested();
if (promise.isCanceled()) if (promise.isCanceled())
break; break;
if (m_fileNames.isEmpty() || m_fileNames.contains(it.value()->filePath().path())) { if (m_filePaths.isEmpty() || m_filePaths.contains(it.value()->filePath())) {
SearchResultItems resultItems; SearchResultItems resultItems;
auto filter = [&](const IndexItem::Ptr &info) -> IndexItem::VisitorResult { auto filter = [&](const IndexItem::Ptr &info) -> IndexItem::VisitorResult {
if (matcher.match(info->symbolName()).hasMatch()) { if (matcher.match(info->symbolName()).hasMatch()) {

View File

@@ -43,13 +43,15 @@ public:
SearchScope scope; SearchScope scope;
}; };
SymbolSearcher(const SymbolSearcher::Parameters &parameters, const QSet<QString> &fileNames); SymbolSearcher(const SymbolSearcher::Parameters &parameters,
const QSet<Utils::FilePath> &filePaths);
void runSearch(QPromise<Utils::SearchResultItem> &promise); void runSearch(QPromise<Utils::SearchResultItem> &promise);
private: private:
const CPlusPlus::Snapshot m_snapshot; const CPlusPlus::Snapshot m_snapshot;
const Parameters m_parameters; const Parameters m_parameters;
const QSet<QString> m_fileNames; const QSet<Utils::FilePath> m_filePaths;
}; };
class CPPEDITOR_EXPORT CppIndexingSupport class CPPEDITOR_EXPORT CppIndexingSupport

View File

@@ -14,6 +14,8 @@
#include <QtTest> #include <QtTest>
using namespace Utils;
namespace { namespace {
QTC_DECLARE_MYTESTDATADIR("../../../tests/cppsymbolsearcher/") QTC_DECLARE_MYTESTDATADIR("../../../tests/cppsymbolsearcher/")
@@ -76,7 +78,7 @@ public:
QVERIFY(parseFiles(testFile)); QVERIFY(parseFiles(testFile));
const QScopedPointer<SymbolSearcher> symbolSearcher( const QScopedPointer<SymbolSearcher> symbolSearcher(
new SymbolSearcher(searchParameters, QSet<QString>{testFile})); new SymbolSearcher(searchParameters, QSet<FilePath>{FilePath::fromString(testFile)}));
QFuture<Utils::SearchResultItem> search QFuture<Utils::SearchResultItem> search
= Utils::asyncRun(&SymbolSearcher::runSearch, symbolSearcher.data()); = Utils::asyncRun(&SymbolSearcher::runSearch, symbolSearcher.data());
search.waitForFinished(); search.waitForFinished();

View File

@@ -107,10 +107,10 @@ void SymbolsFindFilter::findAll(const QString &txt, FindFlags findFlags)
void SymbolsFindFilter::startSearch(SearchResult *search) void SymbolsFindFilter::startSearch(SearchResult *search)
{ {
SymbolSearcher::Parameters parameters = search->userData().value<SymbolSearcher::Parameters>(); SymbolSearcher::Parameters parameters = search->userData().value<SymbolSearcher::Parameters>();
QSet<QString> projectFileNames; QSet<FilePath> projectFileNames;
if (parameters.scope == SymbolSearcher::SearchProjectsOnly) { if (parameters.scope == SymbolSearcher::SearchProjectsOnly) {
for (ProjectExplorer::Project *project : ProjectExplorer::ProjectManager::projects()) for (ProjectExplorer::Project *project : ProjectExplorer::ProjectManager::projects())
projectFileNames += Utils::transform<QSet>(project->files(ProjectExplorer::Project::AllFiles), &Utils::FilePath::toString); projectFileNames += Utils::toSet(project->files(ProjectExplorer::Project::AllFiles));
} }
auto watcher = new QFutureWatcher<SearchResultItem>; auto watcher = new QFutureWatcher<SearchResultItem>;