From 3cb6d17d5ac1b16f870d97a78a08cb788915971a Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 2 Mar 2021 12:13:11 +0100 Subject: [PATCH] LSP: remove optional from required properties Change-Id: Id13dee6d09ee32f0aa6718efdc42ce56bf04e2c5 Reviewed-by: Christian Stenger --- .../languageserverprotocol/initializemessages.h | 14 ++++++++------ src/plugins/languageclient/client.cpp | 5 ++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/libs/languageserverprotocol/initializemessages.h b/src/libs/languageserverprotocol/initializemessages.h index 527e978373d..35a1b3d8f4d 100644 --- a/src/libs/languageserverprotocol/initializemessages.h +++ b/src/libs/languageserverprotocol/initializemessages.h @@ -141,11 +141,12 @@ class LANGUAGESERVERPROTOCOL_EXPORT InitializeResult : public JsonObject public: using JsonObject::JsonObject; - Utils::optional capabilities() const - { return optionalValue(capabilitiesKey); } + ServerCapabilities capabilities() const + { return typedValue(capabilitiesKey); } void setCapabilities(const ServerCapabilities &capabilities) { insert(capabilitiesKey, capabilities); } - void clearCapabilities() { remove(capabilitiesKey); } + + bool isValid() const override { return contains(capabilitiesKey); } }; class LANGUAGESERVERPROTOCOL_EXPORT InitializeError : public JsonObject @@ -159,9 +160,10 @@ public: * (2) user selects retry or cancel * (3) if user selected retry the initialize method is sent again. */ - Utils::optional retry() const { return optionalValue(retryKey); } - void setRetry(bool retry) { insert(retryKey, retry); } - void clearRetry() { remove(retryKey); } + bool retry() const { return typedValue(retryKey); } + void setRetry(const bool &retry) { insert(retryKey, retry); } + + bool isValid() const override { return contains(retryKey); } }; class LANGUAGESERVERPROTOCOL_EXPORT InitializeRequest : public Request< diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 881f94dd45e..9d15677c836 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -1184,8 +1184,7 @@ void Client::initializeCallback(const InitializeRequest::Response &initResponse) { QTC_ASSERT(m_state == InitializeRequested, return); if (optional> error = initResponse.error()) { - if (error.value().data().has_value() - && error.value().data().value().retry().value_or(false)) { + if (error.value().data().has_value() && error.value().data().value().retry()) { const QString title(tr("Language Server \"%1\" Initialize Error").arg(m_displayName)); auto result = QMessageBox::warning(Core::ICore::dialogParent(), title, @@ -1212,7 +1211,7 @@ void Client::initializeCallback(const InitializeRequest::Response &initResponse) + tr("Initialize result is not valid")); } - m_serverCapabilities = result.capabilities().value_or(ServerCapabilities()); + m_serverCapabilities = result.capabilities(); } if (auto completionProvider = qobject_cast(