diff --git a/src/libs/languageserverprotocol/client.cpp b/src/libs/languageserverprotocol/client.cpp index fd62fa548fd..1504fc5e1e9 100644 --- a/src/libs/languageserverprotocol/client.cpp +++ b/src/libs/languageserverprotocol/client.cpp @@ -31,7 +31,7 @@ constexpr const char RegisterCapabilityRequest::methodName[]; constexpr const char UnregisterCapabilityRequest::methodName[]; RegisterCapabilityRequest::RegisterCapabilityRequest(const RegistrationParams ¶ms) - : RegisterCapabilityRequest(methodName, params) { } + : Request(methodName, params) { } UnregisterCapabilityRequest::UnregisterCapabilityRequest(const UnregistrationParams ¶ms) : UnregisterCapabilityRequest(methodName, params) { } diff --git a/src/libs/languageserverprotocol/client.h b/src/libs/languageserverprotocol/client.h index a07d48e94f9..830d1caae43 100644 --- a/src/libs/languageserverprotocol/client.h +++ b/src/libs/languageserverprotocol/client.h @@ -73,7 +73,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT RegisterCapabilityRequest : public Request< std::nullptr_t, std::nullptr_t, RegistrationParams> { public: - RegisterCapabilityRequest(const RegistrationParams ¶ms = RegistrationParams()); + RegisterCapabilityRequest(const RegistrationParams ¶ms); using Request::Request; constexpr static const char methodName[] = "client/registerCapability"; }; @@ -111,7 +111,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT UnregisterCapabilityRequest : public Request std::nullptr_t, std::nullptr_t, UnregistrationParams> { public: - UnregisterCapabilityRequest(const UnregistrationParams ¶ms = UnregistrationParams()); + UnregisterCapabilityRequest(const UnregistrationParams ¶ms); using Request::Request; constexpr static const char methodName[] = "client/unregisterCapability"; }; diff --git a/src/libs/languageserverprotocol/completion.h b/src/libs/languageserverprotocol/completion.h index 629f0eb3980..4e8d34d1c91 100644 --- a/src/libs/languageserverprotocol/completion.h +++ b/src/libs/languageserverprotocol/completion.h @@ -256,7 +256,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT CompletionRequest : public Request< CompletionResult, std::nullptr_t, CompletionParams> { public: - CompletionRequest(const CompletionParams ¶ms = CompletionParams()); + CompletionRequest(const CompletionParams ¶ms); using Request::Request; constexpr static const char methodName[] = "textDocument/completion"; }; @@ -265,7 +265,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT CompletionItemResolveRequest : public Reques CompletionItem, std::nullptr_t, CompletionItem> { public: - CompletionItemResolveRequest(const CompletionItem ¶ms = CompletionItem()); + CompletionItemResolveRequest(const CompletionItem ¶ms); using Request::Request; constexpr static const char methodName[] = "completionItem/resolve"; }; diff --git a/src/libs/languageserverprotocol/diagnostics.h b/src/libs/languageserverprotocol/diagnostics.h index 24c470b2d1c..7525871b051 100644 --- a/src/libs/languageserverprotocol/diagnostics.h +++ b/src/libs/languageserverprotocol/diagnostics.h @@ -49,8 +49,7 @@ public: class LANGUAGESERVERPROTOCOL_EXPORT PublishDiagnosticsNotification : public Notification { public: - PublishDiagnosticsNotification( - const PublishDiagnosticsParams ¶ms = PublishDiagnosticsParams()); + PublishDiagnosticsNotification(const PublishDiagnosticsParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "textDocument/publishDiagnostics"; }; diff --git a/src/libs/languageserverprotocol/initializemessages.cpp b/src/libs/languageserverprotocol/initializemessages.cpp index 66e3407fe11..6cb807a2a23 100644 --- a/src/libs/languageserverprotocol/initializemessages.cpp +++ b/src/libs/languageserverprotocol/initializemessages.cpp @@ -155,8 +155,8 @@ InitializeRequest::InitializeRequest(const InitializeParams ¶ms) : Request(methodName, params) { } -InitializeNotification::InitializeNotification() - : Notification(methodName) +InitializeNotification::InitializeNotification(const InitializedParams ¶ms) + : Notification(methodName, params) { } } // namespace LanguageServerProtocol diff --git a/src/libs/languageserverprotocol/initializemessages.h b/src/libs/languageserverprotocol/initializemessages.h index a79d6e067a2..700caf85373 100644 --- a/src/libs/languageserverprotocol/initializemessages.h +++ b/src/libs/languageserverprotocol/initializemessages.h @@ -129,7 +129,7 @@ using InitializedParams = JsonObject; class LANGUAGESERVERPROTOCOL_EXPORT InitializeNotification : public Notification { public: - InitializeNotification(); + InitializeNotification(const InitializedParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "initialized"; diff --git a/src/libs/languageserverprotocol/jsonrpcmessages.h b/src/libs/languageserverprotocol/jsonrpcmessages.h index 4dd4f7f9002..b5d36e4c4f9 100644 --- a/src/libs/languageserverprotocol/jsonrpcmessages.h +++ b/src/libs/languageserverprotocol/jsonrpcmessages.h @@ -88,13 +88,14 @@ template class Notification : public JsonRpcMessage { public: - Notification() : Notification(QString()) {} - Notification(const QString &methodName, const Params ¶ms = Params()) + Notification(const QString &methodName, const Params ¶ms) { setMethod(methodName); setParams(params); } - using JsonRpcMessage::JsonRpcMessage; + + Notification(const QJsonObject &jsonObject) : JsonRpcMessage(jsonObject) {} + Notification(QJsonObject &&jsonObject) : JsonRpcMessage(std::move(jsonObject)) {} QString method() const { return fromJsonValue(m_jsonObject.value(methodKey)); } @@ -267,8 +268,7 @@ template class Request : public Notification { public: - Request() : Notification() { setId(QUuid::createUuid().toString()); } - Request(const QString &methodName, const Params ¶ms = Params()) + Request(const QString &methodName, const Params ¶ms) : Notification(methodName, params) { setId(QUuid::createUuid().toString()); } Request(const QJsonObject &jsonObject) : Notification(jsonObject) { } @@ -343,7 +343,7 @@ public: class LANGUAGESERVERPROTOCOL_EXPORT CancelRequest : public Notification { public: - CancelRequest(const CancelParameter ¶ms = CancelParameter()); + CancelRequest(const CancelParameter ¶ms); using Notification::Notification; constexpr static const char methodName[] = "$/cancelRequest"; }; diff --git a/src/libs/languageserverprotocol/languagefeatures.h b/src/libs/languageserverprotocol/languagefeatures.h index bc4eaa61ab7..ee40187a71f 100644 --- a/src/libs/languageserverprotocol/languagefeatures.h +++ b/src/libs/languageserverprotocol/languagefeatures.h @@ -898,8 +898,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT SemanticHighlightNotification : public Notification { public: - SemanticHighlightNotification( - const SemanticHighlightingParams ¶ms = SemanticHighlightingParams()); + SemanticHighlightNotification(const SemanticHighlightingParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "textDocument/semanticHighlighting"; }; diff --git a/src/libs/languageserverprotocol/messages.cpp b/src/libs/languageserverprotocol/messages.cpp index 149428b01ac..44a699ca257 100644 --- a/src/libs/languageserverprotocol/messages.cpp +++ b/src/libs/languageserverprotocol/messages.cpp @@ -42,12 +42,12 @@ ShowMessageRequest::ShowMessageRequest(const ShowMessageRequestParams ¶ms) : Request(methodName, params) { } -LogMessageNotification::LogMessageNotification() - : Notification(methodName) +LogMessageNotification::LogMessageNotification(const LogMessageParams ¶ms) + : Notification(methodName, params) { } -TelemetryNotification::TelemetryNotification() - : Notification(methodName) +TelemetryNotification::TelemetryNotification(const JsonObject ¶ms) + : Notification(methodName, params) { } bool ShowMessageRequestParams::isValid(ErrorHierarchy *error) const diff --git a/src/libs/languageserverprotocol/messages.h b/src/libs/languageserverprotocol/messages.h index 0672ad2cc7e..0c10b823db3 100644 --- a/src/libs/languageserverprotocol/messages.h +++ b/src/libs/languageserverprotocol/messages.h @@ -56,7 +56,7 @@ public: class LANGUAGESERVERPROTOCOL_EXPORT ShowMessageNotification : public Notification { public: - ShowMessageNotification(const ShowMessageParams ¶ms = ShowMessageParams()); + ShowMessageNotification(const ShowMessageParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "window/showMessage"; }; @@ -90,7 +90,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ShowMessageRequest : public Request< LanguageClientValue, std::nullptr_t, ShowMessageRequestParams> { public: - ShowMessageRequest(const ShowMessageRequestParams ¶ms = ShowMessageRequestParams()); + ShowMessageRequest(const ShowMessageRequestParams ¶ms); using Request::Request; constexpr static const char methodName[] = "window/showMessageRequest"; }; @@ -100,7 +100,7 @@ using LogMessageParams = ShowMessageParams; class LANGUAGESERVERPROTOCOL_EXPORT LogMessageNotification : public Notification { public: - LogMessageNotification(); + LogMessageNotification(const LogMessageParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "window/logMessage"; }; @@ -108,7 +108,7 @@ public: class LANGUAGESERVERPROTOCOL_EXPORT TelemetryNotification : public Notification { public: - TelemetryNotification(); + TelemetryNotification(const JsonObject ¶ms); using Notification::Notification; constexpr static const char methodName[] = "telemetry/event"; diff --git a/src/libs/languageserverprotocol/shutdownmessages.cpp b/src/libs/languageserverprotocol/shutdownmessages.cpp index 720ac6a6953..01e4ea5763f 100644 --- a/src/libs/languageserverprotocol/shutdownmessages.cpp +++ b/src/libs/languageserverprotocol/shutdownmessages.cpp @@ -29,7 +29,7 @@ namespace LanguageServerProtocol { constexpr const char ShutdownRequest::methodName[]; constexpr const char ExitNotification::methodName[]; -ShutdownRequest::ShutdownRequest() : Request(methodName) { } +ShutdownRequest::ShutdownRequest() : Request(methodName, nullptr) { } ExitNotification::ExitNotification() : Notification(methodName) { } } // namespace LanguageServerProtocol diff --git a/src/libs/languageserverprotocol/textsynchronization.h b/src/libs/languageserverprotocol/textsynchronization.h index dbb3311ad9c..9656455d6fc 100644 --- a/src/libs/languageserverprotocol/textsynchronization.h +++ b/src/libs/languageserverprotocol/textsynchronization.h @@ -49,8 +49,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidOpenTextDocumentNotification : public Not DidOpenTextDocumentParams> { public: - DidOpenTextDocumentNotification( - const DidOpenTextDocumentParams ¶ms = DidOpenTextDocumentParams()); + DidOpenTextDocumentNotification(const DidOpenTextDocumentParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "textDocument/didOpen"; }; @@ -123,7 +122,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidChangeTextDocumentNotification : public N DidChangeTextDocumentParams> { public: - DidChangeTextDocumentNotification(const DidChangeTextDocumentParams ¶ms = DidChangeTextDocumentParams()); + DidChangeTextDocumentNotification(const DidChangeTextDocumentParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "textDocument/didChange"; }; @@ -158,8 +157,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT WillSaveTextDocumentNotification : public No WillSaveTextDocumentParams> { public: - WillSaveTextDocumentNotification( - const WillSaveTextDocumentParams ¶ms = WillSaveTextDocumentParams()); + WillSaveTextDocumentNotification(const WillSaveTextDocumentParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "textDocument/willSave"; }; @@ -168,8 +166,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT WillSaveWaitUntilTextDocumentRequest : publi LanguageClientArray, std::nullptr_t, WillSaveTextDocumentParams> { public: - WillSaveWaitUntilTextDocumentRequest( - const WillSaveTextDocumentParams ¶ms = WillSaveTextDocumentParams()); + WillSaveWaitUntilTextDocumentRequest(const WillSaveTextDocumentParams ¶ms); using Request::Request; constexpr static const char methodName[] = "textDocument/willSaveWaitUntil"; }; @@ -210,8 +207,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidSaveTextDocumentNotification : public Not DidSaveTextDocumentParams> { public: - DidSaveTextDocumentNotification( - const DidSaveTextDocumentParams ¶ms = DidSaveTextDocumentParams()); + DidSaveTextDocumentNotification(const DidSaveTextDocumentParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "textDocument/didSave"; }; @@ -236,8 +232,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidCloseTextDocumentNotification : public No DidCloseTextDocumentParams> { public: - DidCloseTextDocumentNotification( - const DidCloseTextDocumentParams ¶ms = DidCloseTextDocumentParams()); + DidCloseTextDocumentNotification(const DidCloseTextDocumentParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "textDocument/didClose"; }; diff --git a/src/libs/languageserverprotocol/workspace.cpp b/src/libs/languageserverprotocol/workspace.cpp index 267566042e8..3821d6a99ed 100644 --- a/src/libs/languageserverprotocol/workspace.cpp +++ b/src/libs/languageserverprotocol/workspace.cpp @@ -37,7 +37,7 @@ constexpr const char ApplyWorkspaceEditRequest::methodName[]; constexpr const char DidChangeWatchedFilesNotification::methodName[]; WorkSpaceFolderRequest::WorkSpaceFolderRequest() - : Request(methodName) + : Request(methodName, nullptr) { } DidChangeWorkspaceFoldersNotification::DidChangeWorkspaceFoldersNotification( diff --git a/src/libs/languageserverprotocol/workspace.h b/src/libs/languageserverprotocol/workspace.h index dccd0c361a8..00669eba01f 100644 --- a/src/libs/languageserverprotocol/workspace.h +++ b/src/libs/languageserverprotocol/workspace.h @@ -80,8 +80,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidChangeWorkspaceFoldersNotification : publ DidChangeWorkspaceFoldersParams> { public: - DidChangeWorkspaceFoldersNotification( - const DidChangeWorkspaceFoldersParams ¶ms = DidChangeWorkspaceFoldersParams()); + DidChangeWorkspaceFoldersNotification(const DidChangeWorkspaceFoldersParams ¶ms); constexpr static const char methodName[] = "workspace/didChangeWorkspaceFolders"; using Notification::Notification; }; @@ -101,8 +100,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidChangeConfigurationNotification : public DidChangeConfigurationParams> { public: - DidChangeConfigurationNotification( - const DidChangeConfigurationParams ¶ms = DidChangeConfigurationParams()); + DidChangeConfigurationNotification(const DidChangeConfigurationParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "workspace/didChangeConfiguration"; }; @@ -138,7 +136,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ConfigurationRequest : public Request< LanguageClientArray, std::nullptr_t, ConfigurationParams> { public: - ConfigurationRequest(const ConfigurationParams ¶ms = ConfigurationParams()); + ConfigurationRequest(const ConfigurationParams ¶ms); using Request::Request; constexpr static const char methodName[] = "workspace/configuration"; }; @@ -180,7 +178,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT DidChangeWatchedFilesNotification : public N DidChangeWatchedFilesParams> { public: - DidChangeWatchedFilesNotification(const DidChangeWatchedFilesParams ¶ms = DidChangeWatchedFilesParams()); + DidChangeWatchedFilesNotification(const DidChangeWatchedFilesParams ¶ms); using Notification::Notification; constexpr static const char methodName[] = "workspace/didChangeWatchedFiles"; }; @@ -200,7 +198,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT WorkspaceSymbolRequest : public Request< LanguageClientArray, std::nullptr_t, WorkspaceSymbolParams> { public: - WorkspaceSymbolRequest(const WorkspaceSymbolParams ¶ms = WorkspaceSymbolParams()); + WorkspaceSymbolRequest(const WorkspaceSymbolParams ¶ms); using Request::Request; constexpr static const char methodName[] = "workspace/symbol"; }; @@ -231,7 +229,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ExecuteCommandRequest : public Request< QJsonValue, std::nullptr_t, ExecuteCommandParams> { public: - ExecuteCommandRequest(const ExecuteCommandParams ¶ms = ExecuteCommandParams()); + ExecuteCommandRequest(const ExecuteCommandParams ¶ms); using Request::Request; constexpr static const char methodName[] = "workspace/executeCommand"; }; diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index df91b152971..01bda90a6f4 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -1367,7 +1367,7 @@ void Client::initializeCallback(const InitializeRequest::Response &initResponse) qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " initialized"; m_state = Initialized; - sendContent(InitializeNotification()); + sendContent(InitializeNotification(InitializedParams())); if (m_dynamicCapabilities.isRegistered(DocumentSymbolsRequest::methodName) .value_or(capabilities().documentSymbolProvider().value_or(false))) { TextEditor::IOutlineWidgetFactory::updateOutline(); diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index 0b38b42edc9..e354ae4db0c 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -336,7 +336,6 @@ IAssistProposal *LanguageClientCompletionAssistProcessor::perform(const AssistIn } if (m_postponedUpdateConnection) QObject::disconnect(m_postponedUpdateConnection); - CompletionRequest completionRequest; CompletionParams::CompletionContext context; if (interface->reason() == ActivationCharacter) { context.setTriggerKind(CompletionParams::TriggerCharacter); @@ -346,7 +345,7 @@ IAssistProposal *LanguageClientCompletionAssistProcessor::perform(const AssistIn } else { context.setTriggerKind(CompletionParams::Invoked); } - auto params = completionRequest.params().value_or(CompletionParams()); + CompletionParams params; int line; int column; if (!Utils::Text::convertPosition(interface->textDocument(), m_pos, &line, &column)) @@ -357,10 +356,10 @@ IAssistProposal *LanguageClientCompletionAssistProcessor::perform(const AssistIn params.setContext(context); params.setTextDocument( DocumentUri::fromFilePath(Utils::FilePath::fromString(interface->fileName()))); + CompletionRequest completionRequest(params); completionRequest.setResponseCallback([this](auto response) { this->handleCompletionResponse(response); }); - completionRequest.setParams(params); m_client->sendContent(completionRequest); m_client->addAssistProcessor(this); m_currentRequest = completionRequest.id();