LanguageClient: avoid assert on init response

Fixes: QTCREATORBUG-29748
Change-Id: I6b86906f302be6e0eb3a89eaf851f7231bf78586
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
David Schulz
2023-10-16 07:55:57 +02:00
parent 3078aaadcf
commit cad73e4f1a

View File

@@ -537,7 +537,7 @@ void Client::initialize()
else else
params.setWorkSpaceFolders(workspaces); params.setWorkSpaceFolders(workspaces);
InitializeRequest initRequest(params); InitializeRequest initRequest(params);
initRequest.setResponseCallback([this](const InitializeRequest::Response &initResponse){ initRequest.setResponseCallback([this](const InitializeRequest::Response &initResponse) {
d->initializeCallback(initResponse); d->initializeCallback(initResponse);
}); });
if (std::optional<ResponseHandler> responseHandler = initRequest.responseHandler()) if (std::optional<ResponseHandler> responseHandler = initRequest.responseHandler())
@@ -2105,7 +2105,11 @@ void Client::setDocumentChangeUpdateThreshold(int msecs)
void ClientPrivate::initializeCallback(const InitializeRequest::Response &initResponse) void ClientPrivate::initializeCallback(const InitializeRequest::Response &initResponse)
{ {
QTC_ASSERT(m_state == Client::InitializeRequested, return); if (m_state != Client::InitializeRequested) {
qCWarning(LOGLSPCLIENT) << "Dropping initialize response in unexpected state " << m_state;
qCDebug(LOGLSPCLIENT) << initResponse.toJsonObject();
return;
}
if (std::optional<ResponseError<InitializeError>> error = initResponse.error()) { if (std::optional<ResponseError<InitializeError>> error = initResponse.error()) {
if (std::optional<InitializeError> data = error->data()) { if (std::optional<InitializeError> data = error->data()) {
if (data->retry()) { if (data->retry()) {