forked from qt-creator/qt-creator
LSP: add a convenient Error type to the Response
Change-Id: I6059a8891ae3df76a1184001afe9e0d802d649d2 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -196,7 +196,7 @@ public:
|
||||
#undef CASE_ERRORCODES
|
||||
};
|
||||
|
||||
template <typename Result, typename Error>
|
||||
template <typename Result, typename ErrorDataType>
|
||||
class Response : public JsonRpcMessage
|
||||
{
|
||||
public:
|
||||
@@ -217,13 +217,14 @@ public:
|
||||
void setResult(const Result &result) { m_jsonObject.insert(resultKey, result); }
|
||||
void clearResult() { m_jsonObject.remove(resultKey); }
|
||||
|
||||
Utils::optional<ResponseError<Error>> error() const
|
||||
using Error = ResponseError<ErrorDataType>;
|
||||
Utils::optional<Error> error() const
|
||||
{
|
||||
const QJsonValue &val = m_jsonObject.value(errorKey);
|
||||
return val.isUndefined() ? Utils::nullopt
|
||||
: Utils::make_optional(fromJsonValue<ResponseError<Error>>(val));
|
||||
: Utils::make_optional(fromJsonValue<Error>(val));
|
||||
}
|
||||
void setError(const ResponseError<Error> &error)
|
||||
void setError(const Error &error)
|
||||
{ m_jsonObject.insert(errorKey, QJsonValue(error)); }
|
||||
void clearError() { m_jsonObject.remove(errorKey); }
|
||||
|
||||
@@ -231,7 +232,7 @@ public:
|
||||
{ return JsonRpcMessage::isValid(errorMessage) && id().isValid(); }
|
||||
};
|
||||
|
||||
template <typename Result, typename Error, typename Params>
|
||||
template <typename Result, typename ErrorDataType, typename Params>
|
||||
class Request : public Notification<Params>
|
||||
{
|
||||
public:
|
||||
@@ -247,7 +248,7 @@ public:
|
||||
void setId(const MessageId &id)
|
||||
{ JsonRpcMessage::m_jsonObject.insert(idKey, id.toJson()); }
|
||||
|
||||
using Response = LanguageServerProtocol::Response<Result, Error>;
|
||||
using Response = LanguageServerProtocol::Response<Result, ErrorDataType>;
|
||||
using ResponseCallback = std::function<void(Response)>;
|
||||
void setResponseCallback(const ResponseCallback &callback)
|
||||
{ m_callBack = callback; }
|
||||
@@ -263,9 +264,9 @@ public:
|
||||
JsonRpcMessageHandler::toJsonObject(content, codec, parseError);
|
||||
Response response(object);
|
||||
if (object.isEmpty()) {
|
||||
ResponseError<Error> error;
|
||||
ResponseError<ErrorDataType> error;
|
||||
error.setMessage(parseError);
|
||||
response.setError(ResponseError<Error>());
|
||||
response.setError(error);
|
||||
}
|
||||
callback(Response(object));
|
||||
});
|
||||
|
Reference in New Issue
Block a user