forked from qt-creator/qt-creator
clangd: assert on starting client for project that already has a client
Change-Id: Ia50662063f7f7bdc26e5a842f7c25af4f4f4efdf Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -52,6 +52,7 @@
|
|||||||
#include <cppeditor/cppvirtualfunctionproposalitem.h>
|
#include <cppeditor/cppvirtualfunctionproposalitem.h>
|
||||||
#include <cppeditor/semantichighlighter.h>
|
#include <cppeditor/semantichighlighter.h>
|
||||||
#include <languageclient/languageclientinterface.h>
|
#include <languageclient/languageclientinterface.h>
|
||||||
|
#include <languageclient/languageclientmanager.h>
|
||||||
#include <languageclient/languageclientutils.h>
|
#include <languageclient/languageclientutils.h>
|
||||||
#include <projectexplorer/project.h>
|
#include <projectexplorer/project.h>
|
||||||
#include <projectexplorer/projecttree.h>
|
#include <projectexplorer/projecttree.h>
|
||||||
@@ -1197,6 +1198,15 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir)
|
|||||||
initOptions.insert("fallbackFlags", QJsonArray::fromStringList(clangOptions));
|
initOptions.insert("fallbackFlags", QJsonArray::fromStringList(clangOptions));
|
||||||
setInitializationOptions(initOptions);
|
setInitializationOptions(initOptions);
|
||||||
}
|
}
|
||||||
|
auto isRunningClangdClient = [](const LanguageClient::Client *c) {
|
||||||
|
return qobject_cast<const ClangdClient *>(c) && c->state() != Client::ShutdownRequested
|
||||||
|
&& c->state() != Client::Shutdown;
|
||||||
|
};
|
||||||
|
const QList<Client *> clients =
|
||||||
|
Utils::filtered(LanguageClientManager::clientsForProject(project), isRunningClangdClient);
|
||||||
|
QTC_CHECK(clients.isEmpty());
|
||||||
|
for (const Client *client : clients)
|
||||||
|
qCWarning(clangdLog) << client->name() << client->stateString();
|
||||||
ClientCapabilities caps = Client::defaultClientCapabilities();
|
ClientCapabilities caps = Client::defaultClientCapabilities();
|
||||||
Utils::optional<TextDocumentClientCapabilities> textCaps = caps.textDocument();
|
Utils::optional<TextDocumentClientCapabilities> textCaps = caps.textDocument();
|
||||||
if (textCaps) {
|
if (textCaps) {
|
||||||
|
|||||||
Reference in New Issue
Block a user