LSP: fix hover request result

According to the protocol a hover request can also return a Null as a
result. Reflect this in the protocol implementation and adapt usages.

Change-Id: I14ce71639c64b6de00e9c1198617083c1a3de9eb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2022-05-16 13:31:10 +02:00
parent 2b8d96465a
commit 52770b746e
4 changed files with 71 additions and 36 deletions

View File

@@ -58,8 +58,10 @@ void HoverHandler::setHelpItem(const LanguageServerProtocol::MessageId &msgId,
const Core::HelpItem &help)
{
if (msgId == m_response.id()) {
if (Utils::optional<Hover> result = m_response.result())
setContent(result->content());
if (Utils::optional<HoverResult> result = m_response.result()) {
if (auto hover = Utils::get_if<Hover>(&(*result)))
setContent(hover->content());
}
m_response = {};
setLastHelpItemIdentified(help);
m_report(priority());
@@ -129,13 +131,15 @@ void HoverHandler::handleResponse(const HoverRequest::Response &response)
if (m_client)
m_client->log(*error);
}
if (Utils::optional<Hover> result = response.result()) {
if (m_helpItemProvider) {
m_response = response;
m_helpItemProvider(response, m_uri);
return;
if (Utils::optional<HoverResult> result = response.result()) {
if (auto hover = Utils::get_if<Hover>(&(*result))) {
if (m_helpItemProvider) {
m_response = response;
m_helpItemProvider(response, m_uri);
return;
}
setContent(hover->content());
}
setContent(result->content());
}
m_report(priority());
}