LanguageClient/ClangCodeModel: Reimplement matchers()

Don't assert when ClientRequestTask::preStartCheck() failed.

Change-Id: I157fe8fc15aa055b70823d6a54454c6eec692f88
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Jarek Kobus
2023-04-13 10:06:16 +02:00
parent 08f3d57aa1
commit f5d7765094
5 changed files with 64 additions and 3 deletions

View File

@@ -47,6 +47,7 @@ public:
}
};
// TODO: Remove this class, it's used only internally by ClangGlobalSymbolFilter
class LspWorkspaceFilter : public WorkspaceLocatorFilter
{
public:
@@ -81,6 +82,7 @@ public:
}
};
// TODO: Remove this class, it's used only internally by ClangClassesFilter
class LspClassesFilter : public WorkspaceClassLocatorFilter
{
public:
@@ -114,6 +116,7 @@ public:
}
};
// TODO: Remove this class, it's used only internally by ClangFunctionsFilter
class LspFunctionsFilter : public WorkspaceMethodLocatorFilter
{
public:
@@ -156,6 +159,13 @@ ClangGlobalSymbolFilter::~ClangGlobalSymbolFilter()
delete m_lspFilter;
}
LocatorMatcherTasks ClangGlobalSymbolFilter::matchers()
{
return CppEditor::cppMatchers(MatcherType::AllSymbols)
+ LanguageClient::workspaceMatchers(MatcherType::AllSymbols,
ClangModelManagerSupport::clientsForOpenProjects(), MaxResultCount);
}
void ClangGlobalSymbolFilter::prepareSearch(const QString &entry)
{
m_cppFilter->prepareSearch(entry);
@@ -178,6 +188,13 @@ ClangClassesFilter::ClangClassesFilter()
setDefaultIncludedByDefault(false);
}
LocatorMatcherTasks ClangClassesFilter::matchers()
{
return CppEditor::cppMatchers(MatcherType::Classes)
+ LanguageClient::workspaceMatchers(MatcherType::Classes,
ClangModelManagerSupport::clientsForOpenProjects(), MaxResultCount);
}
ClangFunctionsFilter::ClangFunctionsFilter()
: ClangGlobalSymbolFilter(new CppFunctionsFilter, new LspFunctionsFilter)
{
@@ -188,6 +205,13 @@ ClangFunctionsFilter::ClangFunctionsFilter()
setDefaultIncludedByDefault(false);
}
LocatorMatcherTasks ClangFunctionsFilter::matchers()
{
return CppEditor::cppMatchers(MatcherType::Functions)
+ LanguageClient::workspaceMatchers(MatcherType::Functions,
ClangModelManagerSupport::clientsForOpenProjects(), MaxResultCount);
}
class LspCurrentDocumentFilter : public DocumentLocatorFilter
{
public:

View File

@@ -19,6 +19,7 @@ public:
~ClangGlobalSymbolFilter() override;
private:
Core::LocatorMatcherTasks matchers() override;
void prepareSearch(const QString &entry) override;
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
const QString &entry) override;
@@ -26,16 +27,24 @@ private:
Core::ILocatorFilter * const m_lspFilter;
};
// TODO: Don't derive, flatten the hierarchy
class ClangClassesFilter : public ClangGlobalSymbolFilter
{
public:
ClangClassesFilter();
private:
Core::LocatorMatcherTasks matchers() final;
};
// TODO: Don't derive, flatten the hierarchy
class ClangFunctionsFilter : public ClangGlobalSymbolFilter
{
public:
ClangFunctionsFilter();
private:
Core::LocatorMatcherTasks matchers() final;
};
class ClangdCurrentDocumentFilter : public Core::ILocatorFilter