From a2cb1edb690de661f36d3c66a6bf09437badd989 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 1 Nov 2021 07:25:07 +0100 Subject: [PATCH] clangd: assert on starting client for project that already has a client Change-Id: Ia50662063f7f7bdc26e5a842f7c25af4f4f4efdf Reviewed-by: Christian Kandeler --- src/plugins/clangcodemodel/clangdclient.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index eef6e5e5730..00ad74279e3 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include @@ -1197,6 +1198,15 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir) initOptions.insert("fallbackFlags", QJsonArray::fromStringList(clangOptions)); setInitializationOptions(initOptions); } + auto isRunningClangdClient = [](const LanguageClient::Client *c) { + return qobject_cast(c) && c->state() != Client::ShutdownRequested + && c->state() != Client::Shutdown; + }; + const QList 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(); Utils::optional textCaps = caps.textDocument(); if (textCaps) {