diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index 54b9740809c..8b5aa94dba1 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -35,7 +35,6 @@ #include #include #include -#include #include #include @@ -362,19 +361,18 @@ void LanguageClientCompletionAssistProcessor::cancel() void LanguageClientCompletionAssistProcessor::handleCompletionResponse( const CompletionRequest::Response &response) { - LanguageClientCompletionProposal *proposal = nullptr; // We must report back to the code assistant under all circumstances - Utils::ExecuteOnDestruction eod([this, proposal]() { setAsyncProposalAvailable(proposal); }); qCDebug(LOGLSPCOMPLETION) << QTime::currentTime() << " : got completions"; m_currentRequest = MessageId(); - QTC_ASSERT(m_client, return); - if (auto error = response.error()) { + QTC_ASSERT(m_client, setAsyncProposalAvailable(nullptr); return); + if (auto error = response.error()) m_client->log(error.value()); + + const Utils::optional &result = response.result(); + if (!result || Utils::holds_alternative(*result)) { + setAsyncProposalAvailable(nullptr); return; } - const Utils::optional &result = response.result(); - if (!result || Utils::holds_alternative(*result)) - return; QList items; if (Utils::holds_alternative(*result)) { @@ -387,11 +385,12 @@ void LanguageClientCompletionAssistProcessor::handleCompletionResponse( model->loadContent(Utils::transform(items, [](const CompletionItem &item){ return static_cast(new LanguageClientCompletionItem(item)); })); - proposal = new LanguageClientCompletionProposal(m_pos, model); + LanguageClientCompletionProposal *proposal = new LanguageClientCompletionProposal(m_pos, model); proposal->m_document = m_document; proposal->m_pos = m_pos; proposal->setFragile(true); proposal->setSupportsPrefix(false); + setAsyncProposalAvailable(proposal); qCDebug(LOGLSPCOMPLETION) << QTime::currentTime() << " : " << items.count() << " completions handled"; }