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