LSP: workaround msvc 2017 bug

Change-Id: I6a6fbfc1a582d83df3f3cf489236c7ca4c6626f7
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2020-07-13 13:52:27 +02:00
parent c2f51b7797
commit ca0f504c0e
16 changed files with 41 additions and 51 deletions

View File

@@ -31,7 +31,7 @@ constexpr const char RegisterCapabilityRequest::methodName[];
constexpr const char UnregisterCapabilityRequest::methodName[]; constexpr const char UnregisterCapabilityRequest::methodName[];
RegisterCapabilityRequest::RegisterCapabilityRequest(const RegistrationParams &params) RegisterCapabilityRequest::RegisterCapabilityRequest(const RegistrationParams &params)
: RegisterCapabilityRequest(methodName, params) { } : Request(methodName, params) { }
UnregisterCapabilityRequest::UnregisterCapabilityRequest(const UnregistrationParams &params) UnregisterCapabilityRequest::UnregisterCapabilityRequest(const UnregistrationParams &params)
: UnregisterCapabilityRequest(methodName, params) { } : UnregisterCapabilityRequest(methodName, params) { }

View File

@@ -73,7 +73,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT RegisterCapabilityRequest : public Request<
std::nullptr_t, std::nullptr_t, RegistrationParams> std::nullptr_t, std::nullptr_t, RegistrationParams>
{ {
public: public:
RegisterCapabilityRequest(const RegistrationParams &params = RegistrationParams()); RegisterCapabilityRequest(const RegistrationParams &params);
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "client/registerCapability"; constexpr static const char methodName[] = "client/registerCapability";
}; };
@@ -111,7 +111,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT UnregisterCapabilityRequest : public Request
std::nullptr_t, std::nullptr_t, UnregistrationParams> std::nullptr_t, std::nullptr_t, UnregistrationParams>
{ {
public: public:
UnregisterCapabilityRequest(const UnregistrationParams &params = UnregistrationParams()); UnregisterCapabilityRequest(const UnregistrationParams &params);
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "client/unregisterCapability"; constexpr static const char methodName[] = "client/unregisterCapability";
}; };

View File

@@ -256,7 +256,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT CompletionRequest : public Request<
CompletionResult, std::nullptr_t, CompletionParams> CompletionResult, std::nullptr_t, CompletionParams>
{ {
public: public:
CompletionRequest(const CompletionParams &params = CompletionParams()); CompletionRequest(const CompletionParams &params);
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "textDocument/completion"; constexpr static const char methodName[] = "textDocument/completion";
}; };
@@ -265,7 +265,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT CompletionItemResolveRequest : public Reques
CompletionItem, std::nullptr_t, CompletionItem> CompletionItem, std::nullptr_t, CompletionItem>
{ {
public: public:
CompletionItemResolveRequest(const CompletionItem &params = CompletionItem()); CompletionItemResolveRequest(const CompletionItem &params);
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "completionItem/resolve"; constexpr static const char methodName[] = "completionItem/resolve";
}; };

View File

@@ -49,8 +49,7 @@ public:
class LANGUAGESERVERPROTOCOL_EXPORT PublishDiagnosticsNotification : public Notification<PublishDiagnosticsParams> class LANGUAGESERVERPROTOCOL_EXPORT PublishDiagnosticsNotification : public Notification<PublishDiagnosticsParams>
{ {
public: public:
PublishDiagnosticsNotification( PublishDiagnosticsNotification(const PublishDiagnosticsParams &params);
const PublishDiagnosticsParams &params = PublishDiagnosticsParams());
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "textDocument/publishDiagnostics"; constexpr static const char methodName[] = "textDocument/publishDiagnostics";
}; };

View File

@@ -155,8 +155,8 @@ InitializeRequest::InitializeRequest(const InitializeParams &params)
: Request(methodName, params) : Request(methodName, params)
{ } { }
InitializeNotification::InitializeNotification() InitializeNotification::InitializeNotification(const InitializedParams &params)
: Notification(methodName) : Notification(methodName, params)
{ } { }
} // namespace LanguageServerProtocol } // namespace LanguageServerProtocol

View File

@@ -129,7 +129,7 @@ using InitializedParams = JsonObject;
class LANGUAGESERVERPROTOCOL_EXPORT InitializeNotification : public Notification<InitializedParams> class LANGUAGESERVERPROTOCOL_EXPORT InitializeNotification : public Notification<InitializedParams>
{ {
public: public:
InitializeNotification(); InitializeNotification(const InitializedParams &params);
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "initialized"; constexpr static const char methodName[] = "initialized";

View File

@@ -88,13 +88,14 @@ template <typename Params>
class Notification : public JsonRpcMessage class Notification : public JsonRpcMessage
{ {
public: public:
Notification() : Notification(QString()) {} Notification(const QString &methodName, const Params &params)
Notification(const QString &methodName, const Params &params = Params())
{ {
setMethod(methodName); setMethod(methodName);
setParams(params); setParams(params);
} }
using JsonRpcMessage::JsonRpcMessage;
Notification(const QJsonObject &jsonObject) : JsonRpcMessage(jsonObject) {}
Notification(QJsonObject &&jsonObject) : JsonRpcMessage(std::move(jsonObject)) {}
QString method() const QString method() const
{ return fromJsonValue<QString>(m_jsonObject.value(methodKey)); } { return fromJsonValue<QString>(m_jsonObject.value(methodKey)); }
@@ -267,8 +268,7 @@ template <typename Result, typename ErrorDataType, typename Params>
class Request : public Notification<Params> class Request : public Notification<Params>
{ {
public: public:
Request() : Notification<Params>() { setId(QUuid::createUuid().toString()); } Request(const QString &methodName, const Params &params)
Request(const QString &methodName, const Params &params = Params())
: Notification<Params>(methodName, params) : Notification<Params>(methodName, params)
{ setId(QUuid::createUuid().toString()); } { setId(QUuid::createUuid().toString()); }
Request(const QJsonObject &jsonObject) : Notification<Params>(jsonObject) { } Request(const QJsonObject &jsonObject) : Notification<Params>(jsonObject) { }
@@ -343,7 +343,7 @@ public:
class LANGUAGESERVERPROTOCOL_EXPORT CancelRequest : public Notification<CancelParameter> class LANGUAGESERVERPROTOCOL_EXPORT CancelRequest : public Notification<CancelParameter>
{ {
public: public:
CancelRequest(const CancelParameter &params = CancelParameter()); CancelRequest(const CancelParameter &params);
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "$/cancelRequest"; constexpr static const char methodName[] = "$/cancelRequest";
}; };

View File

@@ -898,8 +898,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT SemanticHighlightNotification
: public Notification<SemanticHighlightingParams> : public Notification<SemanticHighlightingParams>
{ {
public: public:
SemanticHighlightNotification( SemanticHighlightNotification(const SemanticHighlightingParams &params);
const SemanticHighlightingParams &params = SemanticHighlightingParams());
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "textDocument/semanticHighlighting"; constexpr static const char methodName[] = "textDocument/semanticHighlighting";
}; };

View File

@@ -42,12 +42,12 @@ ShowMessageRequest::ShowMessageRequest(const ShowMessageRequestParams &params)
: Request(methodName, params) : Request(methodName, params)
{ } { }
LogMessageNotification::LogMessageNotification() LogMessageNotification::LogMessageNotification(const LogMessageParams &params)
: Notification(methodName) : Notification(methodName, params)
{ } { }
TelemetryNotification::TelemetryNotification() TelemetryNotification::TelemetryNotification(const JsonObject &params)
: Notification(methodName) : Notification(methodName, params)
{ } { }
bool ShowMessageRequestParams::isValid(ErrorHierarchy *error) const bool ShowMessageRequestParams::isValid(ErrorHierarchy *error) const

View File

@@ -56,7 +56,7 @@ public:
class LANGUAGESERVERPROTOCOL_EXPORT ShowMessageNotification : public Notification<ShowMessageParams> class LANGUAGESERVERPROTOCOL_EXPORT ShowMessageNotification : public Notification<ShowMessageParams>
{ {
public: public:
ShowMessageNotification(const ShowMessageParams &params = ShowMessageParams()); ShowMessageNotification(const ShowMessageParams &params);
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "window/showMessage"; constexpr static const char methodName[] = "window/showMessage";
}; };
@@ -90,7 +90,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ShowMessageRequest : public Request<
LanguageClientValue<MessageActionItem>, std::nullptr_t, ShowMessageRequestParams> LanguageClientValue<MessageActionItem>, std::nullptr_t, ShowMessageRequestParams>
{ {
public: public:
ShowMessageRequest(const ShowMessageRequestParams &params = ShowMessageRequestParams()); ShowMessageRequest(const ShowMessageRequestParams &params);
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "window/showMessageRequest"; constexpr static const char methodName[] = "window/showMessageRequest";
}; };
@@ -100,7 +100,7 @@ using LogMessageParams = ShowMessageParams;
class LANGUAGESERVERPROTOCOL_EXPORT LogMessageNotification : public Notification<LogMessageParams> class LANGUAGESERVERPROTOCOL_EXPORT LogMessageNotification : public Notification<LogMessageParams>
{ {
public: public:
LogMessageNotification(); LogMessageNotification(const LogMessageParams &params);
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "window/logMessage"; constexpr static const char methodName[] = "window/logMessage";
}; };
@@ -108,7 +108,7 @@ public:
class LANGUAGESERVERPROTOCOL_EXPORT TelemetryNotification : public Notification<JsonObject> class LANGUAGESERVERPROTOCOL_EXPORT TelemetryNotification : public Notification<JsonObject>
{ {
public: public:
TelemetryNotification(); TelemetryNotification(const JsonObject &params);
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "telemetry/event"; constexpr static const char methodName[] = "telemetry/event";

View File

@@ -29,7 +29,7 @@ namespace LanguageServerProtocol {
constexpr const char ShutdownRequest::methodName[]; constexpr const char ShutdownRequest::methodName[];
constexpr const char ExitNotification::methodName[]; constexpr const char ExitNotification::methodName[];
ShutdownRequest::ShutdownRequest() : Request(methodName) { } ShutdownRequest::ShutdownRequest() : Request(methodName, nullptr) { }
ExitNotification::ExitNotification() : Notification(methodName) { } ExitNotification::ExitNotification() : Notification(methodName) { }
} // namespace LanguageServerProtocol } // namespace LanguageServerProtocol

View File

@@ -49,8 +49,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidOpenTextDocumentNotification : public Not
DidOpenTextDocumentParams> DidOpenTextDocumentParams>
{ {
public: public:
DidOpenTextDocumentNotification( DidOpenTextDocumentNotification(const DidOpenTextDocumentParams &params);
const DidOpenTextDocumentParams &params = DidOpenTextDocumentParams());
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "textDocument/didOpen"; constexpr static const char methodName[] = "textDocument/didOpen";
}; };
@@ -123,7 +122,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidChangeTextDocumentNotification : public N
DidChangeTextDocumentParams> DidChangeTextDocumentParams>
{ {
public: public:
DidChangeTextDocumentNotification(const DidChangeTextDocumentParams &params = DidChangeTextDocumentParams()); DidChangeTextDocumentNotification(const DidChangeTextDocumentParams &params);
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "textDocument/didChange"; constexpr static const char methodName[] = "textDocument/didChange";
}; };
@@ -158,8 +157,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT WillSaveTextDocumentNotification : public No
WillSaveTextDocumentParams> WillSaveTextDocumentParams>
{ {
public: public:
WillSaveTextDocumentNotification( WillSaveTextDocumentNotification(const WillSaveTextDocumentParams &params);
const WillSaveTextDocumentParams &params = WillSaveTextDocumentParams());
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "textDocument/willSave"; constexpr static const char methodName[] = "textDocument/willSave";
}; };
@@ -168,8 +166,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT WillSaveWaitUntilTextDocumentRequest : publi
LanguageClientArray<TextEdit>, std::nullptr_t, WillSaveTextDocumentParams> LanguageClientArray<TextEdit>, std::nullptr_t, WillSaveTextDocumentParams>
{ {
public: public:
WillSaveWaitUntilTextDocumentRequest( WillSaveWaitUntilTextDocumentRequest(const WillSaveTextDocumentParams &params);
const WillSaveTextDocumentParams &params = WillSaveTextDocumentParams());
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "textDocument/willSaveWaitUntil"; constexpr static const char methodName[] = "textDocument/willSaveWaitUntil";
}; };
@@ -210,8 +207,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidSaveTextDocumentNotification : public Not
DidSaveTextDocumentParams> DidSaveTextDocumentParams>
{ {
public: public:
DidSaveTextDocumentNotification( DidSaveTextDocumentNotification(const DidSaveTextDocumentParams &params);
const DidSaveTextDocumentParams &params = DidSaveTextDocumentParams());
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "textDocument/didSave"; constexpr static const char methodName[] = "textDocument/didSave";
}; };
@@ -236,8 +232,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidCloseTextDocumentNotification : public No
DidCloseTextDocumentParams> DidCloseTextDocumentParams>
{ {
public: public:
DidCloseTextDocumentNotification( DidCloseTextDocumentNotification(const DidCloseTextDocumentParams &params);
const DidCloseTextDocumentParams &params = DidCloseTextDocumentParams());
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "textDocument/didClose"; constexpr static const char methodName[] = "textDocument/didClose";
}; };

View File

@@ -37,7 +37,7 @@ constexpr const char ApplyWorkspaceEditRequest::methodName[];
constexpr const char DidChangeWatchedFilesNotification::methodName[]; constexpr const char DidChangeWatchedFilesNotification::methodName[];
WorkSpaceFolderRequest::WorkSpaceFolderRequest() WorkSpaceFolderRequest::WorkSpaceFolderRequest()
: Request(methodName) : Request(methodName, nullptr)
{ } { }
DidChangeWorkspaceFoldersNotification::DidChangeWorkspaceFoldersNotification( DidChangeWorkspaceFoldersNotification::DidChangeWorkspaceFoldersNotification(

View File

@@ -80,8 +80,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidChangeWorkspaceFoldersNotification : publ
DidChangeWorkspaceFoldersParams> DidChangeWorkspaceFoldersParams>
{ {
public: public:
DidChangeWorkspaceFoldersNotification( DidChangeWorkspaceFoldersNotification(const DidChangeWorkspaceFoldersParams &params);
const DidChangeWorkspaceFoldersParams &params = DidChangeWorkspaceFoldersParams());
constexpr static const char methodName[] = "workspace/didChangeWorkspaceFolders"; constexpr static const char methodName[] = "workspace/didChangeWorkspaceFolders";
using Notification::Notification; using Notification::Notification;
}; };
@@ -101,8 +100,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidChangeConfigurationNotification : public
DidChangeConfigurationParams> DidChangeConfigurationParams>
{ {
public: public:
DidChangeConfigurationNotification( DidChangeConfigurationNotification(const DidChangeConfigurationParams &params);
const DidChangeConfigurationParams &params = DidChangeConfigurationParams());
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "workspace/didChangeConfiguration"; constexpr static const char methodName[] = "workspace/didChangeConfiguration";
}; };
@@ -138,7 +136,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ConfigurationRequest : public Request<
LanguageClientArray<QJsonValue>, std::nullptr_t, ConfigurationParams> LanguageClientArray<QJsonValue>, std::nullptr_t, ConfigurationParams>
{ {
public: public:
ConfigurationRequest(const ConfigurationParams &params = ConfigurationParams()); ConfigurationRequest(const ConfigurationParams &params);
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "workspace/configuration"; constexpr static const char methodName[] = "workspace/configuration";
}; };
@@ -180,7 +178,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidChangeWatchedFilesNotification : public N
DidChangeWatchedFilesParams> DidChangeWatchedFilesParams>
{ {
public: public:
DidChangeWatchedFilesNotification(const DidChangeWatchedFilesParams &params = DidChangeWatchedFilesParams()); DidChangeWatchedFilesNotification(const DidChangeWatchedFilesParams &params);
using Notification::Notification; using Notification::Notification;
constexpr static const char methodName[] = "workspace/didChangeWatchedFiles"; constexpr static const char methodName[] = "workspace/didChangeWatchedFiles";
}; };
@@ -200,7 +198,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT WorkspaceSymbolRequest : public Request<
LanguageClientArray<SymbolInformation>, std::nullptr_t, WorkspaceSymbolParams> LanguageClientArray<SymbolInformation>, std::nullptr_t, WorkspaceSymbolParams>
{ {
public: public:
WorkspaceSymbolRequest(const WorkspaceSymbolParams &params = WorkspaceSymbolParams()); WorkspaceSymbolRequest(const WorkspaceSymbolParams &params);
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "workspace/symbol"; constexpr static const char methodName[] = "workspace/symbol";
}; };
@@ -231,7 +229,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ExecuteCommandRequest : public Request<
QJsonValue, std::nullptr_t, ExecuteCommandParams> QJsonValue, std::nullptr_t, ExecuteCommandParams>
{ {
public: public:
ExecuteCommandRequest(const ExecuteCommandParams &params = ExecuteCommandParams()); ExecuteCommandRequest(const ExecuteCommandParams &params);
using Request::Request; using Request::Request;
constexpr static const char methodName[] = "workspace/executeCommand"; constexpr static const char methodName[] = "workspace/executeCommand";
}; };

View File

@@ -1367,7 +1367,7 @@ void Client::initializeCallback(const InitializeRequest::Response &initResponse)
qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " initialized"; qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " initialized";
m_state = Initialized; m_state = Initialized;
sendContent(InitializeNotification()); sendContent(InitializeNotification(InitializedParams()));
if (m_dynamicCapabilities.isRegistered(DocumentSymbolsRequest::methodName) if (m_dynamicCapabilities.isRegistered(DocumentSymbolsRequest::methodName)
.value_or(capabilities().documentSymbolProvider().value_or(false))) { .value_or(capabilities().documentSymbolProvider().value_or(false))) {
TextEditor::IOutlineWidgetFactory::updateOutline(); TextEditor::IOutlineWidgetFactory::updateOutline();

View File

@@ -336,7 +336,6 @@ IAssistProposal *LanguageClientCompletionAssistProcessor::perform(const AssistIn
} }
if (m_postponedUpdateConnection) if (m_postponedUpdateConnection)
QObject::disconnect(m_postponedUpdateConnection); QObject::disconnect(m_postponedUpdateConnection);
CompletionRequest completionRequest;
CompletionParams::CompletionContext context; CompletionParams::CompletionContext context;
if (interface->reason() == ActivationCharacter) { if (interface->reason() == ActivationCharacter) {
context.setTriggerKind(CompletionParams::TriggerCharacter); context.setTriggerKind(CompletionParams::TriggerCharacter);
@@ -346,7 +345,7 @@ IAssistProposal *LanguageClientCompletionAssistProcessor::perform(const AssistIn
} else { } else {
context.setTriggerKind(CompletionParams::Invoked); context.setTriggerKind(CompletionParams::Invoked);
} }
auto params = completionRequest.params().value_or(CompletionParams()); CompletionParams params;
int line; int line;
int column; int column;
if (!Utils::Text::convertPosition(interface->textDocument(), m_pos, &line, &column)) if (!Utils::Text::convertPosition(interface->textDocument(), m_pos, &line, &column))
@@ -357,10 +356,10 @@ IAssistProposal *LanguageClientCompletionAssistProcessor::perform(const AssistIn
params.setContext(context); params.setContext(context);
params.setTextDocument( params.setTextDocument(
DocumentUri::fromFilePath(Utils::FilePath::fromString(interface->fileName()))); DocumentUri::fromFilePath(Utils::FilePath::fromString(interface->fileName())));
CompletionRequest completionRequest(params);
completionRequest.setResponseCallback([this](auto response) { completionRequest.setResponseCallback([this](auto response) {
this->handleCompletionResponse(response); this->handleCompletionResponse(response);
}); });
completionRequest.setParams(params);
m_client->sendContent(completionRequest); m_client->sendContent(completionRequest);
m_client->addAssistProcessor(this); m_client->addAssistProcessor(this);
m_currentRequest = completionRequest.id(); m_currentRequest = completionRequest.id();