From 457c88343fdb317a6ddaf69e04a149ad263b2de3 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 7 Jul 2022 16:23:28 +0200 Subject: [PATCH] LSP: define a MessageId invalid if it contains an empty string Change-Id: I90852b4f17a465d562cb402b46de5266aeba9b28 Reviewed-by: Christian Kandeler Reviewed-by: --- .../languageserverprotocol/jsonrpcmessages.h | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/libs/languageserverprotocol/jsonrpcmessages.h b/src/libs/languageserverprotocol/jsonrpcmessages.h index 187cf673b95..3764775eaed 100644 --- a/src/libs/languageserverprotocol/jsonrpcmessages.h +++ b/src/libs/languageserverprotocol/jsonrpcmessages.h @@ -48,17 +48,15 @@ class JsonRpcMessage; class LANGUAGESERVERPROTOCOL_EXPORT MessageId : public Utils::variant { public: - MessageId() = default; + MessageId() : variant(QString()) {} explicit MessageId(int id) : variant(id) {} explicit MessageId(const QString &id) : variant(id) {} explicit MessageId(const QJsonValue &value) { if (value.isDouble()) - *this = MessageId(value.toInt()); - else if (value.isString()) - *this = MessageId(value.toString()); + emplace(value.toInt()); else - m_valid = false; + emplace(value.toString()); } operator QJsonValue() const @@ -70,7 +68,14 @@ public: return QJsonValue(); } - bool isValid() const { return m_valid; } + bool isValid() const + { + if (Utils::holds_alternative(*this)) + return true; + const QString *id = Utils::get_if(this); + QTC_ASSERT(id, return false); + return !id->isEmpty(); + } QString toString() const { @@ -89,9 +94,6 @@ public: return QT_PREPEND_NAMESPACE(qHash(Utils::get(id))); return QT_PREPEND_NAMESPACE(qHash(0)); } - -private: - bool m_valid = true; }; template