diff options
Diffstat (limited to 'src/libs/languageserverprotocol')
21 files changed, 344 insertions, 329 deletions
diff --git a/src/libs/languageserverprotocol/clientcapabilities.cpp b/src/libs/languageserverprotocol/clientcapabilities.cpp index f92103cf35..b7c5c606bd 100644 --- a/src/libs/languageserverprotocol/clientcapabilities.cpp +++ b/src/libs/languageserverprotocol/clientcapabilities.cpp @@ -5,14 +5,13 @@ namespace LanguageServerProtocol { -Utils::optional<QList<SymbolKind> > SymbolCapabilities::SymbolKindCapabilities::valueSet() const +std::optional<QList<SymbolKind>> SymbolCapabilities::SymbolKindCapabilities::valueSet() const { - if (Utils::optional<QList<int>> array = optionalArray<int>(valueSetKey)) { - return Utils::make_optional(Utils::transform(*array, [] (int value) { - return static_cast<SymbolKind>(value); - })); + if (std::optional<QList<int>> array = optionalArray<int>(valueSetKey)) { + return std::make_optional( + Utils::transform(*array, [](int value) { return static_cast<SymbolKind>(value); })); } - return Utils::nullopt; + return std::nullopt; } void SymbolCapabilities::SymbolKindCapabilities::setValueSet(const QList<SymbolKind> &valueSet) @@ -25,7 +24,7 @@ WorkspaceClientCapabilities::WorkspaceClientCapabilities() setWorkspaceFolders(true); } -Utils::optional<std::variant<bool, QJsonObject>> SemanticTokensClientCapabilities::Requests::range() +std::optional<std::variant<bool, QJsonObject>> SemanticTokensClientCapabilities::Requests::range() const { using RetType = std::variant<bool, QJsonObject>; @@ -34,7 +33,7 @@ Utils::optional<std::variant<bool, QJsonObject>> SemanticTokensClientCapabilitie return RetType(rangeOptions.toBool()); if (rangeOptions.isObject()) return RetType(rangeOptions.toObject()); - return Utils::nullopt; + return std::nullopt; } void SemanticTokensClientCapabilities::Requests::setRange( @@ -43,7 +42,7 @@ void SemanticTokensClientCapabilities::Requests::setRange( insertVariant<bool, QJsonObject>(rangeKey, range); } -Utils::optional<std::variant<bool, FullSemanticTokenOptions>> +std::optional<std::variant<bool, FullSemanticTokenOptions>> SemanticTokensClientCapabilities::Requests::full() const { using RetType = std::variant<bool, FullSemanticTokenOptions>; @@ -52,7 +51,7 @@ SemanticTokensClientCapabilities::Requests::full() const return RetType(fullOptions.toBool()); if (fullOptions.isObject()) return RetType(FullSemanticTokenOptions(fullOptions.toObject())); - return Utils::nullopt; + return std::nullopt; } void SemanticTokensClientCapabilities::Requests::setFull( @@ -61,8 +60,7 @@ void SemanticTokensClientCapabilities::Requests::setFull( insertVariant<bool, FullSemanticTokenOptions>(fullKey, full); } -Utils::optional<SemanticTokensClientCapabilities> TextDocumentClientCapabilities::semanticTokens() - const +std::optional<SemanticTokensClientCapabilities> TextDocumentClientCapabilities::semanticTokens() const { return optionalValue<SemanticTokensClientCapabilities>(semanticTokensKey); } diff --git a/src/libs/languageserverprotocol/clientcapabilities.h b/src/libs/languageserverprotocol/clientcapabilities.h index 4bbfaf723d..409081a230 100644 --- a/src/libs/languageserverprotocol/clientcapabilities.h +++ b/src/libs/languageserverprotocol/clientcapabilities.h @@ -14,7 +14,10 @@ class LANGUAGESERVERPROTOCOL_EXPORT DynamicRegistrationCapabilities : public Jso public: using JsonObject::JsonObject; - Utils::optional<bool> dynamicRegistration() const { return optionalValue<bool>(dynamicRegistrationKey); } + std::optional<bool> dynamicRegistration() const + { + return optionalValue<bool>(dynamicRegistrationKey); + } void setDynamicRegistration(bool dynamicRegistration) { insert(dynamicRegistrationKey, dynamicRegistration); } void clearDynamicRegistration() { remove(dynamicRegistrationKey); } }; @@ -28,7 +31,7 @@ public: * The client will send the `textDocument/semanticTokens/full/delta` * request if the server provides a corresponding handler. */ - Utils::optional<bool> delta() const { return optionalValue<bool>(deltaKey); } + std::optional<bool> delta() const { return optionalValue<bool>(deltaKey); } void setDelta(bool delta) { insert(deltaKey, delta); } void clearDelta() { remove(deltaKey); } }; @@ -56,7 +59,7 @@ public: * The client will send the `textDocument/semanticTokens/range` request * if the server provides a corresponding handler. */ - Utils::optional<std::variant<bool, QJsonObject>> range() const; + std::optional<std::variant<bool, QJsonObject>> range() const; void setRange(const std::variant<bool, QJsonObject> &range); void clearRange() { remove(rangeKey); } @@ -64,7 +67,7 @@ public: * The client will send the `textDocument/semanticTokens/full` request * if the server provides a corresponding handler. */ - Utils::optional<std::variant<bool, FullSemanticTokenOptions>> full() const; + std::optional<std::variant<bool, FullSemanticTokenOptions>> full() const; void setFull(const std::variant<bool, FullSemanticTokenOptions> &full); void clearFull() { remove(fullKey); } }; @@ -85,12 +88,18 @@ public: void setFormats(const QList<QString> &value) { insertArray(formatsKey, value); } /// Whether the client supports tokens that can overlap each other. - Utils::optional<bool> overlappingTokenSupport() const { return optionalValue<bool>(overlappingTokenSupportKey); } + std::optional<bool> overlappingTokenSupport() const + { + return optionalValue<bool>(overlappingTokenSupportKey); + } void setOverlappingTokenSupport(bool overlappingTokenSupport) { insert(overlappingTokenSupportKey, overlappingTokenSupport); } void clearOverlappingTokenSupport() { remove(overlappingTokenSupportKey); } /// Whether the client supports tokens that can span multiple lines. - Utils::optional<bool> multiLineTokenSupport() const { return optionalValue<bool>(multiLineTokenSupportKey); } + std::optional<bool> multiLineTokenSupport() const + { + return optionalValue<bool>(multiLineTokenSupportKey); + } void setMultiLineTokenSupport(bool multiLineTokenSupport) { insert(multiLineTokenSupportKey, multiLineTokenSupport); } void clearMultiLineTokenSupport() { remove(multiLineTokenSupportKey); } @@ -117,18 +126,18 @@ public: * the symbol kinds from `File` to `Array` as defined in * the initial version of the protocol. */ - Utils::optional<QList<SymbolKind>> valueSet() const; + std::optional<QList<SymbolKind>> valueSet() const; void setValueSet(const QList<SymbolKind> &valueSet); void clearValueSet() { remove(valueSetKey); } }; // Specific capabilities for the `SymbolKind` in the `workspace/symbol` request. - Utils::optional<SymbolKindCapabilities> symbolKind() const + std::optional<SymbolKindCapabilities> symbolKind() const { return optionalValue<SymbolKindCapabilities>(symbolKindKey); } void setSymbolKind(const SymbolKindCapabilities &symbolKind) { insert(symbolKindKey, symbolKind); } void clearSymbolKind() { remove(symbolKindKey); } - Utils::optional<bool> hierarchicalDocumentSymbolSupport() const + std::optional<bool> hierarchicalDocumentSymbolSupport() const { return optionalValue<bool>(hierarchicalDocumentSymbolSupportKey); } void setHierarchicalDocumentSymbolSupport(bool hierarchicalDocumentSymbolSupport) { insert(hierarchicalDocumentSymbolSupportKey, hierarchicalDocumentSymbolSupport); } @@ -146,7 +155,7 @@ public: using DynamicRegistrationCapabilities::DynamicRegistrationCapabilities; // The client supports sending will save notifications. - Utils::optional<bool> willSave() const { return optionalValue<bool>(willSaveKey); } + std::optional<bool> willSave() const { return optionalValue<bool>(willSaveKey); } void setWillSave(bool willSave) { insert(willSaveKey, willSave); } void clearWillSave() { remove(willSaveKey); } @@ -155,19 +164,19 @@ public: * waits for a response providing text edits which will * be applied to the document before it is saved. */ - Utils::optional<bool> willSaveWaitUntil() const + std::optional<bool> willSaveWaitUntil() const { return optionalValue<bool>(willSaveWaitUntilKey); } void setWillSaveWaitUntil(bool willSaveWaitUntil) { insert(willSaveWaitUntilKey, willSaveWaitUntil); } void clearWillSaveWaitUntil() { remove(willSaveWaitUntilKey); } // The client supports did save notifications. - Utils::optional<bool> didSave() const { return optionalValue<bool>(didSaveKey); } + std::optional<bool> didSave() const { return optionalValue<bool>(didSaveKey); } void setDidSave(bool didSave) { insert(didSaveKey, didSave); } void clearDidSave() { remove(didSaveKey); } }; - Utils::optional<SynchronizationCapabilities> synchronization() const + std::optional<SynchronizationCapabilities> synchronization() const { return optionalValue<SynchronizationCapabilities>(synchronizationKey); } void setSynchronization(const SynchronizationCapabilities &synchronization) { insert(synchronizationKey, synchronization); } @@ -191,14 +200,14 @@ public: * the end of the snippet. Placeholders with equal identifiers are linked, * that is typing in one will update others too. */ - Utils::optional<bool> snippetSupport() const + std::optional<bool> snippetSupport() const { return optionalValue<bool>(snippetSupportKey); } void setSnippetSupport(bool snippetSupport) { insert(snippetSupportKey, snippetSupport); } void clearSnippetSupport() { remove(snippetSupportKey); } // Client supports commit characters on a completion item. - Utils::optional<bool> commitCharacterSupport() const + std::optional<bool> commitCharacterSupport() const { return optionalValue<bool>(commitCharacterSupportKey); } void setCommitCharacterSupport(bool commitCharacterSupport) { insert(commitCharacterSupportKey, commitCharacterSupport); } @@ -208,13 +217,13 @@ public: * Client supports the follow content formats for the documentation * property. The order describes the preferred format of the client. */ - Utils::optional<QList<MarkupKind>> documentationFormat() const; + std::optional<QList<MarkupKind>> documentationFormat() const; void setDocumentationFormat(const QList<MarkupKind> &documentationFormat); void clearDocumentationFormat() { remove(documentationFormatKey); } }; // The client supports the following `CompletionItem` specific capabilities. - Utils::optional<CompletionItemCapbilities> completionItem() const + std::optional<CompletionItemCapbilities> completionItem() const { return optionalValue<CompletionItemCapbilities>(completionItemKey); } void setCompletionItem(const CompletionItemCapbilities &completionItem) { insert(completionItemKey, completionItem); } @@ -235,12 +244,12 @@ public: * the completion items kinds from `Text` to `Reference` as defined in * the initial version of the protocol. */ - Utils::optional<QList<CompletionItemKind::Kind>> valueSet() const; + std::optional<QList<CompletionItemKind::Kind>> valueSet() const; void setValueSet(const QList<CompletionItemKind::Kind> &valueSet); void clearValueSet() { remove(valueSetKey); } }; - Utils::optional<CompletionItemKindCapabilities> completionItemKind() const + std::optional<CompletionItemKindCapabilities> completionItemKind() const { return optionalValue<CompletionItemKindCapabilities>(completionItemKindKey); } void setCompletionItemKind(const CompletionItemKindCapabilities &completionItemKind) { insert(completionItemKindKey, completionItemKind); } @@ -250,13 +259,16 @@ public: * The client supports to send additional context information for a * `textDocument/completion` request. */ - Utils::optional<bool> contextSupport() const { return optionalValue<bool>(contextSupportKey); } + std::optional<bool> contextSupport() const + { + return optionalValue<bool>(contextSupportKey); + } void setContextSupport(bool contextSupport) { insert(contextSupportKey, contextSupport); } void clearContextSupport() { remove(contextSupportKey); } }; // Capabilities specific to the `textDocument/completion` - Utils::optional<CompletionCapabilities> completion() const + std::optional<CompletionCapabilities> completion() const { return optionalValue<CompletionCapabilities>(completionKey); } void setCompletion(const CompletionCapabilities &completion) { insert(completionKey, completion); } @@ -270,12 +282,15 @@ public: * Client supports the follow content formats for the content * property. The order describes the preferred format of the client. */ - Utils::optional<QList<MarkupKind>> contentFormat() const; + std::optional<QList<MarkupKind>> contentFormat() const; void setContentFormat(const QList<MarkupKind> &contentFormat); void clearContentFormat() { remove(contentFormatKey); } }; - Utils::optional<HoverCapabilities> hover() const { return optionalValue<HoverCapabilities>(hoverKey); } + std::optional<HoverCapabilities> hover() const + { + return optionalValue<HoverCapabilities>(hoverKey); + } void setHover(const HoverCapabilities &hover) { insert(hoverKey, hover); } void clearHover() { remove(hoverKey); } @@ -292,11 +307,11 @@ public: * Client supports the follow content formats for the documentation * property. The order describes the preferred format of the client. */ - Utils::optional<QList<MarkupKind>> documentationFormat() const; + std::optional<QList<MarkupKind>> documentationFormat() const; void setDocumentationFormat(const QList<MarkupKind> &documentationFormat); void clearDocumentationFormat() { remove(documentationFormatKey); } - Utils::optional<bool> activeParameterSupport() const + std::optional<bool> activeParameterSupport() const { return optionalValue<bool>(activeParameterSupportKey); } void setActiveParameterSupport(bool activeParameterSupport) { insert(activeParameterSupportKey, activeParameterSupport); } @@ -304,7 +319,7 @@ public: }; // The client supports the following `SignatureInformation` specific properties. - Utils::optional<SignatureInformationCapabilities> signatureInformation() const + std::optional<SignatureInformationCapabilities> signatureInformation() const { return optionalValue<SignatureInformationCapabilities>(signatureInformationKey); } void setSignatureInformation(const SignatureInformationCapabilities &signatureInformation) { insert(signatureInformationKey, signatureInformation); } @@ -312,56 +327,56 @@ public: }; // Capabilities specific to the `textDocument/signatureHelp` - Utils::optional<SignatureHelpCapabilities> signatureHelp() const + std::optional<SignatureHelpCapabilities> signatureHelp() const { return optionalValue<SignatureHelpCapabilities>(signatureHelpKey); } void setSignatureHelp(const SignatureHelpCapabilities &signatureHelp) { insert(signatureHelpKey, signatureHelp); } void clearSignatureHelp() { remove(signatureHelpKey); } // Whether references supports dynamic registration. - Utils::optional<DynamicRegistrationCapabilities> references() const + std::optional<DynamicRegistrationCapabilities> references() const { return optionalValue<DynamicRegistrationCapabilities>(referencesKey); } void setReferences(const DynamicRegistrationCapabilities &references) { insert(referencesKey, references); } void clearReferences() { remove(referencesKey); } // Whether document highlight supports dynamic registration. - Utils::optional<DynamicRegistrationCapabilities> documentHighlight() const + std::optional<DynamicRegistrationCapabilities> documentHighlight() const { return optionalValue<DynamicRegistrationCapabilities>(documentHighlightKey); } void setDocumentHighlight(const DynamicRegistrationCapabilities &documentHighlight) { insert(documentHighlightKey, documentHighlight); } void clearDocumentHighlight() { remove(documentHighlightKey); } // Capabilities specific to the `textDocument/documentSymbol` - Utils::optional<SymbolCapabilities> documentSymbol() const + std::optional<SymbolCapabilities> documentSymbol() const { return optionalValue<SymbolCapabilities>(documentSymbolKey); } void setDocumentSymbol(const SymbolCapabilities &documentSymbol) { insert(documentSymbolKey, documentSymbol); } void clearDocumentSymbol() { remove(documentSymbolKey); } // Whether formatting supports dynamic registration. - Utils::optional<DynamicRegistrationCapabilities> formatting() const + std::optional<DynamicRegistrationCapabilities> formatting() const { return optionalValue<DynamicRegistrationCapabilities>(formattingKey); } void setFormatting(const DynamicRegistrationCapabilities &formatting) { insert(formattingKey, formatting); } void clearFormatting() { remove(formattingKey); } // Whether range formatting supports dynamic registration. - Utils::optional<DynamicRegistrationCapabilities> rangeFormatting() const + std::optional<DynamicRegistrationCapabilities> rangeFormatting() const { return optionalValue<DynamicRegistrationCapabilities>(rangeFormattingKey); } void setRangeFormatting(const DynamicRegistrationCapabilities &rangeFormatting) { insert(rangeFormattingKey, rangeFormatting); } void clearRangeFormatting() { remove(rangeFormattingKey); } // Whether on type formatting supports dynamic registration. - Utils::optional<DynamicRegistrationCapabilities> onTypeFormatting() const + std::optional<DynamicRegistrationCapabilities> onTypeFormatting() const { return optionalValue<DynamicRegistrationCapabilities>(onTypeFormattingKey); } void setOnTypeFormatting(const DynamicRegistrationCapabilities &onTypeFormatting) { insert(onTypeFormattingKey, onTypeFormatting); } void clearOnTypeFormatting() { remove(onTypeFormattingKey); } // Whether definition supports dynamic registration. - Utils::optional<DynamicRegistrationCapabilities> definition() const + std::optional<DynamicRegistrationCapabilities> definition() const { return optionalValue<DynamicRegistrationCapabilities>(definitionKey); } void setDefinition(const DynamicRegistrationCapabilities &definition) { insert(definitionKey, definition); } @@ -372,7 +387,7 @@ public: * the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)` * return value for the corresponding server capability as well. */ - Utils::optional<DynamicRegistrationCapabilities> typeDefinition() const + std::optional<DynamicRegistrationCapabilities> typeDefinition() const { return optionalValue<DynamicRegistrationCapabilities>(typeDefinitionKey); } void setTypeDefinition(const DynamicRegistrationCapabilities &typeDefinition) { insert(typeDefinitionKey, typeDefinition); } @@ -383,7 +398,7 @@ public: * the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)` * return value for the corresponding server capability as well. */ - Utils::optional<DynamicRegistrationCapabilities> implementation() const + std::optional<DynamicRegistrationCapabilities> implementation() const { return optionalValue<DynamicRegistrationCapabilities>(implementationKey); } void setImplementation(const DynamicRegistrationCapabilities &implementation) { insert(implementationKey, implementation); } @@ -421,7 +436,7 @@ public: bool isValid() const override { return contains(codeActionKindKey); } }; - Utils::optional<CodeActionLiteralSupport> codeActionLiteralSupport() const + std::optional<CodeActionLiteralSupport> codeActionLiteralSupport() const { return optionalValue<CodeActionLiteralSupport>(codeActionLiteralSupportKey); } void setCodeActionLiteralSupport(const CodeActionLiteralSupport &codeActionLiteralSupport) { insert(codeActionLiteralSupportKey, codeActionLiteralSupport); } @@ -429,21 +444,21 @@ public: }; // Whether code action supports dynamic registration. - Utils::optional<CodeActionCapabilities> codeAction() const + std::optional<CodeActionCapabilities> codeAction() const { return optionalValue<CodeActionCapabilities>(codeActionKey); } void setCodeAction(const CodeActionCapabilities &codeAction) { insert(codeActionKey, codeAction); } void clearCodeAction() { remove(codeActionKey); } // Whether code lens supports dynamic registration. - Utils::optional<DynamicRegistrationCapabilities> codeLens() const + std::optional<DynamicRegistrationCapabilities> codeLens() const { return optionalValue<DynamicRegistrationCapabilities>(codeLensKey); } void setCodeLens(const DynamicRegistrationCapabilities &codeLens) { insert(codeLensKey, codeLens); } void clearCodeLens() { remove(codeLensKey); } // Whether document link supports dynamic registration. - Utils::optional<DynamicRegistrationCapabilities> documentLink() const + std::optional<DynamicRegistrationCapabilities> documentLink() const { return optionalValue<DynamicRegistrationCapabilities>(documentLinkKey); } void setDocumentLink(const DynamicRegistrationCapabilities &documentLink) { insert(documentLinkKey, documentLink); } @@ -454,7 +469,7 @@ public: * the client supports the new `(ColorProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)` * return value for the corresponding server capability as well. */ - Utils::optional<DynamicRegistrationCapabilities> colorProvider() const + std::optional<DynamicRegistrationCapabilities> colorProvider() const { return optionalValue<DynamicRegistrationCapabilities>(colorProviderKey); } void setColorProvider(const DynamicRegistrationCapabilities &colorProvider) { insert(colorProviderKey, colorProvider); } @@ -471,19 +486,22 @@ public: * @since version 3.12.0 */ - Utils::optional<bool> prepareSupport() const { return optionalValue<bool>(prepareSupportKey); } + std::optional<bool> prepareSupport() const + { + return optionalValue<bool>(prepareSupportKey); + } void setPrepareSupport(bool prepareSupport) { insert(prepareSupportKey, prepareSupport); } void clearPrepareSupport() { remove(prepareSupportKey); } }; // Whether rename supports dynamic registration. - Utils::optional<RenameClientCapabilities> rename() const + std::optional<RenameClientCapabilities> rename() const { return optionalValue<RenameClientCapabilities>(renameKey); } void setRename(const RenameClientCapabilities &rename) { insert(renameKey, rename); } void clearRename() { remove(renameKey); } - Utils::optional<SemanticTokensClientCapabilities> semanticTokens() const; + std::optional<SemanticTokensClientCapabilities> semanticTokens() const; void setSemanticTokens(const SemanticTokensClientCapabilities &semanticTokens); void clearSemanticTokens() { remove(semanticTokensKey); } }; @@ -501,7 +519,7 @@ public: * and is useful for situation where a server for example detect a project * wide change that requires such a calculation. */ - Utils::optional<bool> refreshSupport() const { return optionalValue<bool>(refreshSupportKey); } + std::optional<bool> refreshSupport() const { return optionalValue<bool>(refreshSupportKey); } void setRefreshSupport(bool refreshSupport) { insert(refreshSupportKey, refreshSupport); } void clearRefreshSupport() { remove(refreshSupportKey); } }; @@ -516,7 +534,7 @@ public: * The client supports applying batch edits to the workspace by supporting the request * 'workspace/applyEdit' */ - Utils::optional<bool> applyEdit() const { return optionalValue<bool>(applyEditKey); } + std::optional<bool> applyEdit() const { return optionalValue<bool>(applyEditKey); } void setApplyEdit(bool applyEdit) { insert(applyEditKey, applyEdit); } void clearApplyEdit() { remove(applyEditKey); } @@ -526,7 +544,7 @@ public: using JsonObject::JsonObject; // The client supports versioned document changes in `WorkspaceEdit`s - Utils::optional<bool> documentChanges() const + std::optional<bool> documentChanges() const { return optionalValue<bool>(documentChangesKey); } void setDocumentChanges(bool documentChanges) { insert(documentChangesKey, documentChanges); } @@ -534,52 +552,52 @@ public: }; // Capabilities specific to `WorkspaceEdit`s - Utils::optional<WorkspaceEditCapabilities> workspaceEdit() const + std::optional<WorkspaceEditCapabilities> workspaceEdit() const { return optionalValue<WorkspaceEditCapabilities>(workspaceEditKey); } void setWorkspaceEdit(const WorkspaceEditCapabilities &workspaceEdit) { insert(workspaceEditKey, workspaceEdit); } void clearWorkspaceEdit() { remove(workspaceEditKey); } // Capabilities specific to the `workspace/didChangeConfiguration` notification. - Utils::optional<DynamicRegistrationCapabilities> didChangeConfiguration() const + std::optional<DynamicRegistrationCapabilities> didChangeConfiguration() const { return optionalValue<DynamicRegistrationCapabilities>(didChangeConfigurationKey); } void setDidChangeConfiguration(const DynamicRegistrationCapabilities &didChangeConfiguration) { insert(didChangeConfigurationKey, didChangeConfiguration); } void clearDidChangeConfiguration() { remove(didChangeConfigurationKey); } // Capabilities specific to the `workspace/didChangeWatchedFiles` notification. - Utils::optional<DynamicRegistrationCapabilities> didChangeWatchedFiles() const + std::optional<DynamicRegistrationCapabilities> didChangeWatchedFiles() const { return optionalValue<DynamicRegistrationCapabilities>(didChangeWatchedFilesKey); } void setDidChangeWatchedFiles(const DynamicRegistrationCapabilities &didChangeWatchedFiles) { insert(didChangeWatchedFilesKey, didChangeWatchedFiles); } void clearDidChangeWatchedFiles() { remove(didChangeWatchedFilesKey); } // Specific capabilities for the `SymbolKind` in the `workspace/symbol` request. - Utils::optional<SymbolCapabilities> symbol() const + std::optional<SymbolCapabilities> symbol() const { return optionalValue<SymbolCapabilities>(symbolKey); } void setSymbol(const SymbolCapabilities &symbol) { insert(symbolKey, symbol); } void clearSymbol() { remove(symbolKey); } // Capabilities specific to the `workspace/executeCommand` request. - Utils::optional<DynamicRegistrationCapabilities> executeCommand() const + std::optional<DynamicRegistrationCapabilities> executeCommand() const { return optionalValue<DynamicRegistrationCapabilities>(executeCommandKey); } void setExecuteCommand(const DynamicRegistrationCapabilities &executeCommand) { insert(executeCommandKey, executeCommand); } void clearExecuteCommand() { remove(executeCommandKey); } // The client has support for workspace folders. Since 3.6.0 - Utils::optional<bool> workspaceFolders() const + std::optional<bool> workspaceFolders() const { return optionalValue<bool>(workspaceFoldersKey); } void setWorkspaceFolders(bool workspaceFolders) { insert(workspaceFoldersKey, workspaceFolders); } void clearWorkspaceFolders() { remove(workspaceFoldersKey); } // The client supports `workspace/configuration` requests. Since 3.6.0 - Utils::optional<bool> configuration() const { return optionalValue<bool>(configurationKey); } + std::optional<bool> configuration() const { return optionalValue<bool>(configurationKey); } void setConfiguration(bool configuration) { insert(configurationKey, configuration); } void clearConfiguration() { remove(configurationKey); } - Utils::optional<SemanticTokensWorkspaceClientCapabilities> semanticTokens() const + std::optional<SemanticTokensWorkspaceClientCapabilities> semanticTokens() const { return optionalValue<SemanticTokensWorkspaceClientCapabilities>(semanticTokensKey); } void setSemanticTokens(const SemanticTokensWorkspaceClientCapabilities &semanticTokens) { insert(semanticTokensKey, semanticTokens); } @@ -597,7 +615,7 @@ public: * in the request specific server capabilities. * */ - Utils::optional<bool> workDoneProgress() const + std::optional<bool> workDoneProgress() const { return optionalValue<bool>(workDoneProgressKey); } void setWorkDoneProgress(bool workDoneProgress) { insert(workDoneProgressKey, workDoneProgress); } @@ -613,21 +631,21 @@ public: using JsonObject::JsonObject; // Workspace specific client capabilities. - Utils::optional<WorkspaceClientCapabilities> workspace() const + std::optional<WorkspaceClientCapabilities> workspace() const { return optionalValue<WorkspaceClientCapabilities>(workspaceKey); } void setWorkspace(const WorkspaceClientCapabilities &workspace) { insert(workspaceKey, workspace); } void clearWorkspace() { remove(workspaceKey); } // Text document specific client capabilities. - Utils::optional<TextDocumentClientCapabilities> textDocument() const + std::optional<TextDocumentClientCapabilities> textDocument() const { return optionalValue<TextDocumentClientCapabilities>(textDocumentKey); } void setTextDocument(const TextDocumentClientCapabilities &textDocument) { insert(textDocumentKey, textDocument); } void clearTextDocument() { remove(textDocumentKey); } // Window specific client capabilities. - Utils::optional<WindowClientClientCapabilities> window() const + std::optional<WindowClientClientCapabilities> window() const { return optionalValue<WindowClientClientCapabilities>(windowKey); } void setWindow(const WindowClientClientCapabilities &window) { insert(windowKey, window); } diff --git a/src/libs/languageserverprotocol/completion.cpp b/src/libs/languageserverprotocol/completion.cpp index 99e204ccd7..543abb9cfc 100644 --- a/src/libs/languageserverprotocol/completion.cpp +++ b/src/libs/languageserverprotocol/completion.cpp @@ -12,22 +12,22 @@ CompletionRequest::CompletionRequest(const CompletionParams ¶ms) : Request(methodName, params) { } -Utils::optional<MarkupOrString> CompletionItem::documentation() const +std::optional<MarkupOrString> CompletionItem::documentation() const { QJsonValue documentation = value(documentationKey); if (documentation.isUndefined()) - return Utils::nullopt; + return std::nullopt; return MarkupOrString(documentation); } -Utils::optional<CompletionItem::InsertTextFormat> CompletionItem::insertTextFormat() const +std::optional<CompletionItem::InsertTextFormat> CompletionItem::insertTextFormat() const { - if (Utils::optional<int> value = optionalValue<int>(insertTextFormatKey)) - return Utils::make_optional(CompletionItem::InsertTextFormat(*value)); - return Utils::nullopt; + if (std::optional<int> value = optionalValue<int>(insertTextFormatKey)) + return std::make_optional(CompletionItem::InsertTextFormat(*value)); + return std::nullopt; } -Utils::optional<QList<CompletionItem::CompletionItemTag>> CompletionItem::tags() const +std::optional<QList<CompletionItem::CompletionItemTag>> CompletionItem::tags() const { if (const auto value = optionalValue<QJsonArray>(tagsKey)) { QList<CompletionItemTag> tags; diff --git a/src/libs/languageserverprotocol/completion.h b/src/libs/languageserverprotocol/completion.h index 6e623acaca..9537df5538 100644 --- a/src/libs/languageserverprotocol/completion.h +++ b/src/libs/languageserverprotocol/completion.h @@ -43,7 +43,7 @@ public: * The trigger character (a single character) that has trigger code complete. * Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter` */ - Utils::optional<QString> triggerCharacter() const + std::optional<QString> triggerCharacter() const { return optionalValue<QString>(triggerCharacterKey); } void setTriggerCharacter(const QString &triggerCharacter) { insert(triggerCharacterKey, triggerCharacter); } @@ -56,7 +56,7 @@ public: * The completion context. This is only available it the client specifies * to send this using `ClientCapabilities.textDocument.completion.contextSupport === true` */ - Utils::optional<CompletionContext> context() const + std::optional<CompletionContext> context() const { return optionalValue<CompletionContext>(contextKey); } void setContext(const CompletionContext &context) { insert(contextKey, context); } @@ -79,30 +79,30 @@ public: void setLabel(const QString &label) { insert(labelKey, label); } /// The kind of this completion item. Based of the kind an icon is chosen by the editor. - Utils::optional<int> kind() const { return optionalValue<int>(kindKey); } + std::optional<int> kind() const { return optionalValue<int>(kindKey); } void setKind(int kind) { insert(kindKey, kind); } void clearKind() { remove(kindKey); } /// A human-readable string with additional information about this item, like type information. - Utils::optional<QString> detail() const { return optionalValue<QString>(detailKey); } + std::optional<QString> detail() const { return optionalValue<QString>(detailKey); } void setDetail(const QString &detail) { insert(detailKey, detail); } void clearDetail() { remove(detailKey); } /// A human-readable string that represents a doc-comment. - Utils::optional<MarkupOrString> documentation() const; + std::optional<MarkupOrString> documentation() const; void setDocumentation(const MarkupOrString &documentation) { insert(documentationKey, documentation.toJson()); } void cleatDocumentation() { remove(documentationKey); } /// A string that should be used when comparing this item /// with other items. When `falsy` the label is used. - Utils::optional<QString> sortText() const { return optionalValue<QString>(sortTextKey); } + std::optional<QString> sortText() const { return optionalValue<QString>(sortTextKey); } void setSortText(const QString &sortText) { insert(sortTextKey, sortText); } void clearSortText() { remove(sortTextKey); } /// A string that should be used when filtering a set of /// completion items. When `falsy` the label is used. - Utils::optional<QString> filterText() const { return optionalValue<QString>(filterTextKey); } + std::optional<QString> filterText() const { return optionalValue<QString>(filterTextKey); } void setFilterText(const QString &filterText) { insert(filterTextKey, filterText); } void clearFilterText() { remove(filterTextKey); } @@ -119,7 +119,7 @@ public: * * @deprecated Use textEdit instead. */ - Utils::optional<QString> insertText() const { return optionalValue<QString>(insertTextKey); } + std::optional<QString> insertText() const { return optionalValue<QString>(insertTextKey); } void setInsertText(const QString &insertText) { insert(insertTextKey, insertText); } void clearInsertText() { remove(insertTextKey); } @@ -140,7 +140,7 @@ public: /// The format of the insert text. The format applies to both the `insertText` property /// and the `newText` property of a provided `textEdit`. - Utils::optional<InsertTextFormat> insertTextFormat() const; + std::optional<InsertTextFormat> insertTextFormat() const; void setInsertTextFormat(const InsertTextFormat &insertTextFormat) { insert(insertTextFormatKey, insertTextFormat); } void clearInsertTextFormat() { remove(insertTextFormatKey); } @@ -152,7 +152,7 @@ public: * *Note:* The range of the edit must be a single line range and it must contain the position at which completion * has been requested. */ - Utils::optional<TextEdit> textEdit() const { return optionalValue<TextEdit>(textEditKey); } + std::optional<TextEdit> textEdit() const { return optionalValue<TextEdit>(textEditKey); } void setTextEdit(const TextEdit &textEdit) { insert(textEditKey, textEdit); } void clearTextEdit() { remove(textEditKey); } @@ -161,7 +161,7 @@ public: * selecting this completion. Edits must not overlap with the main edit * nor with themselves. */ - Utils::optional<QList<TextEdit>> additionalTextEdits() const + std::optional<QList<TextEdit>> additionalTextEdits() const { return optionalArray<TextEdit>(additionalTextEditsKey); } void setAdditionalTextEdits(const QList<TextEdit> &additionalTextEdits) { insertArray(additionalTextEditsKey, additionalTextEdits); } @@ -172,7 +172,7 @@ public: * then type that character. *Note* that all commit characters should have `length=1` and that superfluous * characters will be ignored. */ - Utils::optional<QList<QString>> commitCharacters() const + std::optional<QList<QString>> commitCharacters() const { return optionalArray<QString>(commitCharactersKey); } void setCommitCharacters(const QList<QString> &commitCharacters) { insertArray(commitCharactersKey, commitCharacters); } @@ -183,7 +183,7 @@ public: * additional modifications to the current document should be described with the * additionalTextEdits-property. */ - Utils::optional<Command> command() const { return optionalValue<Command>(commandKey); } + std::optional<Command> command() const { return optionalValue<Command>(commandKey); } void setCommand(const Command &command) { insert(commandKey, command); } void clearCommand() { remove(commandKey); } @@ -191,7 +191,7 @@ public: * An data entry field that is preserved on a completion item between * a completion and a completion resolve request. */ - Utils::optional<QJsonValue> data() const { return optionalValue<QJsonValue>(dataKey); } + std::optional<QJsonValue> data() const { return optionalValue<QJsonValue>(dataKey); } void setData(const QJsonValue &data) { insert(dataKey, data); } void clearData() { remove(dataKey); } @@ -208,13 +208,13 @@ public: * Tags for this completion item. * @since 3.15.0 */ - Utils::optional<QList<CompletionItemTag>> tags() const; + std::optional<QList<CompletionItemTag>> tags() const; /** * Indicates if this item is deprecated. * @deprecated Use `tags` instead if supported. */ - Utils::optional<bool> deprecated() const { return optionalValue<bool>(deprecatedKey); } + std::optional<bool> deprecated() const { return optionalValue<bool>(deprecatedKey); } bool isValid() const override { return contains(labelKey); } }; @@ -232,7 +232,7 @@ public: void setIsIncomplete(bool isIncomplete) { insert(isIncompleteKey, isIncomplete); } /// The completion items. - Utils::optional<QList<CompletionItem>> items() const { return array<CompletionItem>(itemsKey); } + std::optional<QList<CompletionItem>> items() const { return array<CompletionItem>(itemsKey); } void setItems(const QList<CompletionItem> &items) { insertArray(itemsKey, items); } void clearItems() { remove(itemsKey); } diff --git a/src/libs/languageserverprotocol/diagnostics.h b/src/libs/languageserverprotocol/diagnostics.h index 181172e875..f13cdac786 100644 --- a/src/libs/languageserverprotocol/diagnostics.h +++ b/src/libs/languageserverprotocol/diagnostics.h @@ -20,7 +20,7 @@ public: void setDiagnostics(const QList<Diagnostic> &diagnostics) { insertArray(diagnosticsKey, diagnostics); } - Utils::optional<int> version() const { return optionalValue<int>(versionKey); } + std::optional<int> version() const { return optionalValue<int>(versionKey); } void setVersion(int version) { insert(versionKey, version); } void clearVersion() { remove(versionKey); } diff --git a/src/libs/languageserverprotocol/initializemessages.cpp b/src/libs/languageserverprotocol/initializemessages.cpp index 288d7efc5d..4b6df50cfd 100644 --- a/src/libs/languageserverprotocol/initializemessages.cpp +++ b/src/libs/languageserverprotocol/initializemessages.cpp @@ -32,7 +32,7 @@ QString Trace::toString() const } #undef RETURN_CASE -Utils::optional<QList<MarkupKind>> +std::optional<QList<MarkupKind>> TextDocumentClientCapabilities::CompletionCapabilities::CompletionItemCapbilities:: documentationFormat() const { @@ -59,16 +59,16 @@ TextDocumentClientCapabilities::CompletionCapabilities::CompletionItemKindCapabi CompletionItemKind::TypeParameter}); } -Utils::optional<QList<CompletionItemKind::Kind>> +std::optional<QList<CompletionItemKind::Kind>> TextDocumentClientCapabilities::CompletionCapabilities::CompletionItemKindCapabilities:: valueSet() const { - if (Utils::optional<QList<int>> array = optionalArray<int>(valueSetKey)) { - return Utils::make_optional(Utils::transform(*array, [] (int value) { + if (std::optional<QList<int>> array = optionalArray<int>(valueSetKey)) { + return std::make_optional(Utils::transform(*array, [](int value) { return static_cast<CompletionItemKind::Kind>(value); })); } - return Utils::nullopt; + return std::nullopt; } void @@ -78,7 +78,7 @@ setValueSet(const QList<CompletionItemKind::Kind> &valueSet) insert(valueSetKey, enumArrayToJsonArray<CompletionItemKind::Kind>(valueSet)); } -Utils::optional<QList<MarkupKind> > TextDocumentClientCapabilities::HoverCapabilities::contentFormat() const +std::optional<QList<MarkupKind> > TextDocumentClientCapabilities::HoverCapabilities::contentFormat() const { return optionalArray<MarkupKind>(contentFormatKey); } @@ -88,7 +88,7 @@ void TextDocumentClientCapabilities::HoverCapabilities::setContentFormat(const Q insertArray(contentFormatKey, contentFormat); } -Utils::optional<QList<MarkupKind>> +std::optional<QList<MarkupKind>> TextDocumentClientCapabilities::SignatureHelpCapabilities::SignatureInformationCapabilities:: documentationFormat() const { @@ -110,20 +110,20 @@ InitializeParams::InitializeParams() setTrace(s_trace); } -Utils::optional<QJsonObject> InitializeParams::initializationOptions() const +std::optional<QJsonObject> InitializeParams::initializationOptions() const { const QJsonValue &optionsValue = value(initializationOptionsKey); if (optionsValue.isObject()) return optionsValue.toObject(); - return Utils::nullopt; + return std::nullopt; } -Utils::optional<Trace> InitializeParams::trace() const +std::optional<Trace> InitializeParams::trace() const { const QJsonValue &traceValue = value(traceKey); if (traceValue.isUndefined()) - return Utils::nullopt; - return Utils::make_optional(Trace(traceValue.toString())); + return std::nullopt; + return std::make_optional(Trace(traceValue.toString())); } InitializeRequest::InitializeRequest(const InitializeParams ¶ms) diff --git a/src/libs/languageserverprotocol/initializemessages.h b/src/libs/languageserverprotocol/initializemessages.h index 29e924e6c9..3573cdd817 100644 --- a/src/libs/languageserverprotocol/initializemessages.h +++ b/src/libs/languageserverprotocol/initializemessages.h @@ -39,7 +39,7 @@ public: QString name() const { return typedValue<QString>(nameKey); } void setName(const QString &name) { insert(nameKey, name); } - Utils::optional<QString> version() const { return optionalValue<QString>(versionKey); } + std::optional<QString> version() const { return optionalValue<QString>(versionKey); } void setVersion(const QString &version) { insert(versionKey, version); } void clearVersion() { remove(versionKey); } }; @@ -65,7 +65,7 @@ public: * * @deprecated in favor of rootUri. */ - Utils::optional<LanguageClientValue<QString>> rootPath() const + std::optional<LanguageClientValue<QString>> rootPath() const { return optionalClientValue<QString>(rootPathKey); } void setRootPath(const LanguageClientValue<QString> &path) { insert(rootPathKey, path); } @@ -82,7 +82,7 @@ public: { insert(rootUriKey, uri); } // User provided initialization options. - Utils::optional<QJsonObject> initializationOptions() const; + std::optional<QJsonObject> initializationOptions() const; void setInitializationOptions(const QJsonObject &options) { insert(initializationOptionsKey, options); } void clearInitializationOptions() { remove(initializationOptionsKey); } @@ -93,7 +93,7 @@ public: { insert(capabilitiesKey, capabilities); } // The initial trace setting. If omitted trace is disabled ('off'). - Utils::optional<Trace> trace() const; + std::optional<Trace> trace() const; void setTrace(Trace trace) { insert(traceKey, trace.toString()); } void clearTrace() { remove(traceKey); } @@ -105,13 +105,13 @@ public: * * Since 3.6.0 */ - Utils::optional<LanguageClientArray<WorkSpaceFolder>> workspaceFolders() const + std::optional<LanguageClientArray<WorkSpaceFolder>> workspaceFolders() const { return optionalClientArray<WorkSpaceFolder>(workspaceFoldersKey); } void setWorkSpaceFolders(const LanguageClientArray<WorkSpaceFolder> &folders) { insert(workspaceFoldersKey, folders.toJson()); } void clearWorkSpaceFolders() { remove(workspaceFoldersKey); } - Utils::optional<ClientInfo> clientInfo() const { return optionalValue<ClientInfo>(clientInfoKey); } + std::optional<ClientInfo> clientInfo() const { return optionalValue<ClientInfo>(clientInfoKey); } void setClientInfo(const ClientInfo &clientInfo) { insert(clientInfoKey, clientInfo); } void clearClientInfo() { remove(clientInfoKey); } @@ -137,7 +137,7 @@ public: using JsonObject::JsonObject; QString name() const { return typedValue<QString>(nameKey); } - Utils::optional<QString> version() const { return optionalValue<QString>(versionKey); } + std::optional<QString> version() const { return optionalValue<QString>(versionKey); } bool isValid() const override { return contains(nameKey); } }; @@ -152,7 +152,7 @@ public: void setCapabilities(const ServerCapabilities &capabilities) { insert(capabilitiesKey, capabilities); } - Utils::optional<ServerInfo> serverInfo() const + std::optional<ServerInfo> serverInfo() const { return optionalValue<ServerInfo>(serverInfoKey); } bool isValid() const override { return contains(capabilitiesKey); } diff --git a/src/libs/languageserverprotocol/jsonobject.h b/src/libs/languageserverprotocol/jsonobject.h index cde35b1863..1d04634fea 100644 --- a/src/libs/languageserverprotocol/jsonobject.h +++ b/src/libs/languageserverprotocol/jsonobject.h @@ -65,19 +65,19 @@ protected: template<typename T> T typedValue(const QStringView key) const; template<typename T> - Utils::optional<T> optionalValue(const QStringView key) const; + std::optional<T> optionalValue(const QStringView key) const; template<typename T> LanguageClientValue<T> clientValue(const QStringView key) const; template<typename T> - Utils::optional<LanguageClientValue<T>> optionalClientValue(const QStringView key) const; + std::optional<LanguageClientValue<T>> optionalClientValue(const QStringView key) const; template<typename T> QList<T> array(const QStringView key) const; template<typename T> - Utils::optional<QList<T>> optionalArray(const QStringView key) const; + std::optional<QList<T>> optionalArray(const QStringView key) const; template<typename T> LanguageClientArray<T> clientArray(const QStringView key) const; template<typename T> - Utils::optional<LanguageClientArray<T>> optionalClientArray(const QStringView key) const; + std::optional<LanguageClientArray<T>> optionalClientArray(const QStringView key) const; template<typename T> void insertArray(const QStringView key, const QList<T> &array); template<typename> @@ -107,10 +107,10 @@ T JsonObject::typedValue(const QStringView key) const } template<typename T> -Utils::optional<T> JsonObject::optionalValue(const QStringView key) const +std::optional<T> JsonObject::optionalValue(const QStringView key) const { const QJsonValue &val = value(key); - return val.isUndefined() ? Utils::nullopt : Utils::make_optional(fromJsonValue<T>(val)); + return val.isUndefined() ? std::nullopt : std::make_optional(fromJsonValue<T>(val)); } template<typename T> @@ -120,26 +120,26 @@ LanguageClientValue<T> JsonObject::clientValue(const QStringView key) const } template<typename T> -Utils::optional<LanguageClientValue<T>> JsonObject::optionalClientValue(const QStringView key) const +std::optional<LanguageClientValue<T>> JsonObject::optionalClientValue(const QStringView key) const { - return contains(key) ? Utils::make_optional(clientValue<T>(key)) : Utils::nullopt; + return contains(key) ? std::make_optional(clientValue<T>(key)) : std::nullopt; } template<typename T> QList<T> JsonObject::array(const QStringView key) const { - if (const Utils::optional<QList<T>> &array = optionalArray<T>(key)) + if (const std::optional<QList<T>> &array = optionalArray<T>(key)) return *array; qCDebug(conversionLog) << QString("Expected array under %1 in:").arg(key) << *this; return {}; } template<typename T> -Utils::optional<QList<T>> JsonObject::optionalArray(const QStringView key) const +std::optional<QList<T>> JsonObject::optionalArray(const QStringView key) const { const QJsonValue &jsonValue = value(key); if (jsonValue.isUndefined()) - return Utils::nullopt; + return std::nullopt; return Utils::transform<QList<T>>(jsonValue.toArray(), &fromJsonValue<T>); } @@ -150,11 +150,11 @@ LanguageClientArray<T> JsonObject::clientArray(const QStringView key) const } template<typename T> -Utils::optional<LanguageClientArray<T>> JsonObject::optionalClientArray(const QStringView key) const +std::optional<LanguageClientArray<T>> JsonObject::optionalClientArray(const QStringView key) const { const QJsonValue &val = value(key); - return !val.isUndefined() ? Utils::make_optional(LanguageClientArray<T>(value(key))) - : Utils::nullopt; + return !val.isUndefined() ? std::make_optional(LanguageClientArray<T>(value(key))) + : std::nullopt; } template<typename T> diff --git a/src/libs/languageserverprotocol/jsonrpcmessages.h b/src/libs/languageserverprotocol/jsonrpcmessages.h index 927647db60..3886dcbc9e 100644 --- a/src/libs/languageserverprotocol/jsonrpcmessages.h +++ b/src/libs/languageserverprotocol/jsonrpcmessages.h @@ -7,7 +7,6 @@ #include "lsptypes.h" #include "jsonkeys.h" -#include <utils/optional.h> #include <utils/qtcassert.h> #include <QDebug> @@ -18,6 +17,7 @@ #include <QCoreApplication> #include <QUuid> +#include <optional> #include <variant> namespace LanguageServerProtocol { @@ -112,8 +112,7 @@ public: const QString parseError() { return m_parseError; } - virtual Utils::optional<ResponseHandler> responseHandler() const - { return Utils::nullopt; } + virtual std::optional<ResponseHandler> responseHandler() const { return std::nullopt; } BaseMessage toBaseMessage() const { return BaseMessage(jsonRpcMimeType(), toRawData()); } @@ -143,10 +142,10 @@ public: void setMethod(const QString &method) { m_jsonObject.insert(methodKey, method); } - Utils::optional<Params> params() const + std::optional<Params> params() const { const QJsonValue ¶ms = m_jsonObject.value(paramsKey); - return params.isUndefined() ? Utils::nullopt : Utils::make_optional(Params(params)); + return params.isUndefined() ? std::nullopt : std::make_optional(Params(params)); } void setParams(const Params ¶ms) { m_jsonObject.insert(paramsKey, QJsonValue(params)); } @@ -187,7 +186,7 @@ public: void setMethod(const QString &method) { m_jsonObject.insert(methodKey, method); } - Utils::optional<std::nullptr_t> params() const + std::optional<std::nullptr_t> params() const { return nullptr; } void setParams(const std::nullptr_t &/*params*/) { m_jsonObject.insert(paramsKey, QJsonValue::Null); } @@ -216,7 +215,7 @@ public: QString message() const { return typedValue<QString>(messageKey); } void setMessage(const QString &message) { insert(messageKey, message); } - Utils::optional<Error> data() const { return optionalValue<Error>(dataKey); } + std::optional<Error> data() const { return optionalValue<Error>(dataKey); } void setData(const Error &data) { insert(dataKey, data); } void clearData() { remove(dataKey); } @@ -275,22 +274,21 @@ public: void setId(MessageId id) { this->m_jsonObject.insert(idKey, id); } - Utils::optional<Result> result() const + std::optional<Result> result() const { const QJsonValue &result = m_jsonObject.value(resultKey); if (result.isUndefined()) - return Utils::nullopt; - return Utils::make_optional(Result(result)); + return std::nullopt; + return std::make_optional(Result(result)); } void setResult(const Result &result) { m_jsonObject.insert(resultKey, QJsonValue(result)); } void clearResult() { m_jsonObject.remove(resultKey); } using Error = ResponseError<ErrorDataType>; - Utils::optional<Error> error() const + std::optional<Error> error() const { const QJsonValue &val = m_jsonObject.value(errorKey); - return val.isUndefined() ? Utils::nullopt - : Utils::make_optional(fromJsonValue<Error>(val)); + return val.isUndefined() ? std::nullopt : std::make_optional(fromJsonValue<Error>(val)); } void setError(const Error &error) { m_jsonObject.insert(errorKey, QJsonValue(error)); } @@ -312,20 +310,18 @@ public: void setId(MessageId id) { this->m_jsonObject.insert(idKey, id); } - Utils::optional<std::nullptr_t> result() const + std::optional<std::nullptr_t> result() const { - return m_jsonObject.value(resultKey).isNull() ? Utils::make_optional(nullptr) - : Utils::nullopt; + return m_jsonObject.value(resultKey).isNull() ? std::make_optional(nullptr) : std::nullopt; } void setResult(const std::nullptr_t &) { m_jsonObject.insert(resultKey, QJsonValue::Null); } void clearResult() { m_jsonObject.remove(resultKey); } using Error = ResponseError<ErrorDataType>; - Utils::optional<Error> error() const + std::optional<Error> error() const { const QJsonValue &val = m_jsonObject.value(errorKey); - return val.isUndefined() ? Utils::nullopt - : Utils::make_optional(fromJsonValue<Error>(val)); + return val.isUndefined() ? std::nullopt : std::make_optional(fromJsonValue<Error>(val)); } void setError(const Error &error) { m_jsonObject.insert(errorKey, QJsonValue(error)); } @@ -357,7 +353,7 @@ public: void setResponseCallback(const ResponseCallback &callback) { m_callBack = callback; } - Utils::optional<ResponseHandler> responseHandler() const final + std::optional<ResponseHandler> responseHandler() const final { QElapsedTimer timer; timer.start(); @@ -369,7 +365,7 @@ public: callback(Response(message.toJsonObject())); }; - return Utils::make_optional(ResponseHandler{id(), callback}); + return std::make_optional(ResponseHandler{id(), callback}); } bool isValid(QString *errorMessage) const override diff --git a/src/libs/languageserverprotocol/languagefeatures.cpp b/src/libs/languageserverprotocol/languagefeatures.cpp index 6b2ce364a0..3d605158bd 100644 --- a/src/libs/languageserverprotocol/languagefeatures.cpp +++ b/src/libs/languageserverprotocol/languagefeatures.cpp @@ -49,11 +49,11 @@ HoverRequest::HoverRequest(const TextDocumentPositionParams ¶ms) : Request(methodName, params) { } -Utils::optional<MarkupOrString> ParameterInformation::documentation() const +std::optional<MarkupOrString> ParameterInformation::documentation() const { QJsonValue documentation = value(documentationKey); if (documentation.isUndefined()) - return Utils::nullopt; + return std::nullopt; return MarkupOrString(documentation); } @@ -81,7 +81,7 @@ DocumentSymbolsRequest::DocumentSymbolsRequest(const DocumentSymbolParams ¶m : Request(methodName, params) { } -Utils::optional<QList<CodeActionKind> > CodeActionParams::CodeActionContext::only() const +std::optional<QList<CodeActionKind> > CodeActionParams::CodeActionContext::only() const { return optionalArray<CodeActionKind>(onlyKey); } @@ -180,16 +180,16 @@ RenameRequest::RenameRequest(const RenameParams ¶ms) : Request(methodName, params) { } -Utils::optional<DocumentUri> DocumentLink::target() const +std::optional<DocumentUri> DocumentLink::target() const { - if (Utils::optional<QString> optionalTarget = optionalValue<QString>(targetKey)) - return Utils::make_optional(DocumentUri::fromProtocol(*optionalTarget)); - return Utils::nullopt; + if (std::optional<QString> optionalTarget = optionalValue<QString>(targetKey)) + return std::make_optional(DocumentUri::fromProtocol(*optionalTarget)); + return std::nullopt; } -Utils::optional<QJsonValue> DocumentLink::data() const +std::optional<QJsonValue> DocumentLink::data() const { - return contains(dataKey) ? Utils::make_optional(value(dataKey)) : Utils::nullopt; + return contains(dataKey) ? std::make_optional(value(dataKey)) : std::nullopt; } TextDocumentParams::TextDocumentParams() @@ -376,9 +376,9 @@ PrepareRenameResult::PrepareRenameResult(const QJsonValue &val) } } -Utils::optional<QJsonValue> CodeLens::data() const +std::optional<QJsonValue> CodeLens::data() const { - return contains(dataKey) ? Utils::make_optional(value(dataKey)) : Utils::nullopt; + return contains(dataKey) ? std::make_optional(value(dataKey)) : std::nullopt; } HoverResult::HoverResult(const QJsonValue &value) diff --git a/src/libs/languageserverprotocol/languagefeatures.h b/src/libs/languageserverprotocol/languagefeatures.h index fac9bcf410..753aad67f3 100644 --- a/src/libs/languageserverprotocol/languagefeatures.h +++ b/src/libs/languageserverprotocol/languagefeatures.h @@ -72,7 +72,7 @@ public: HoverContent content() const; void setContent(const HoverContent &content); - Utils::optional<Range> range() const { return optionalValue<Range>(rangeKey); } + std::optional<Range> range() const { return optionalValue<Range>(rangeKey); } void setRange(const Range &range) { insert(rangeKey, range); } void clearRange() { remove(rangeKey); } @@ -109,7 +109,7 @@ public: QString label() const { return typedValue<QString>(labelKey); } void setLabel(const QString &label) { insert(labelKey, label); } - Utils::optional<MarkupOrString> documentation() const; + std::optional<MarkupOrString> documentation() const; void setDocumentation(const MarkupOrString &documentation) { insert(documentationKey, documentation.toJson()); } void clearDocumentation() { remove(documentationKey); } @@ -127,13 +127,13 @@ class LANGUAGESERVERPROTOCOL_EXPORT SignatureInformation : public ParameterInfor public: using ParameterInformation::ParameterInformation; - Utils::optional<QList<ParameterInformation>> parameters() const + std::optional<QList<ParameterInformation>> parameters() const { return optionalArray<ParameterInformation>(parametersKey); } void setParameters(const QList<ParameterInformation> ¶meters) { insertArray(parametersKey, parameters); } void clearParameters() { remove(parametersKey); } - Utils::optional<int> activeParameter() const { return optionalValue<int>(activeParameterKey); } + std::optional<int> activeParameter() const { return optionalValue<int>(activeParameterKey); } void setActiveParameter(int activeParameter) { insert(activeParameterKey, activeParameter); } void clearActiveParameter() { remove(activeParameterKey); } }; @@ -163,7 +163,7 @@ public: * In future version of the protocol this property might become * mandatory to better express this. */ - Utils::optional<int> activeSignature() const { return optionalValue<int>(activeSignatureKey); } + std::optional<int> activeSignature() const { return optionalValue<int>(activeSignatureKey); } void setActiveSignature(int activeSignature) { insert(activeSignatureKey, activeSignature); } void clearActiveSignature() { remove(activeSignatureKey); } @@ -176,7 +176,7 @@ public: * mandatory to better express the active parameter if the * active signature does have any. */ - Utils::optional<int> activeParameter() const { return optionalValue<int>(activeParameterKey); } + std::optional<int> activeParameter() const { return optionalValue<int>(activeParameterKey); } void setActiveParameter(int activeParameter) { insert(activeParameterKey, activeParameter); } void clearActiveParameter() { remove(activeParameterKey); } @@ -277,7 +277,7 @@ public: Range range() const { return typedValue<Range>(rangeKey); } void setRange(const Range &range) { insert(rangeKey, range); } - Utils::optional<int> kind() const { return optionalValue<int>(kindKey); } + std::optional<int> kind() const { return optionalValue<int>(kindKey); } void setKind(int kind) { insert(kindKey, kind); } void clearKind() { remove(kindKey); } @@ -394,7 +394,7 @@ public: void setDiagnostics(const QList<Diagnostic> &diagnostics) { insertArray(diagnosticsKey, diagnostics); } - Utils::optional<QList<CodeActionKind>> only() const; + std::optional<QList<CodeActionKind>> only() const; void setOnly(const QList<CodeActionKind> &only); void clearOnly() { remove(onlyKey); } @@ -424,21 +424,21 @@ public: QString title() const { return typedValue<QString>(titleKey); } void setTitle(QString title) { insert(titleKey, title); } - Utils::optional<CodeActionKind> kind() const { return optionalValue<CodeActionKind>(kindKey); } + std::optional<CodeActionKind> kind() const { return optionalValue<CodeActionKind>(kindKey); } void setKind(const CodeActionKind &kind) { insert(kindKey, kind); } void clearKind() { remove(kindKey); } - Utils::optional<QList<Diagnostic>> diagnostics() const + std::optional<QList<Diagnostic>> diagnostics() const { return optionalArray<Diagnostic>(diagnosticsKey); } void setDiagnostics(const QList<Diagnostic> &diagnostics) { insertArray(diagnosticsKey, diagnostics); } void clearDiagnostics() { remove(diagnosticsKey); } - Utils::optional<WorkspaceEdit> edit() const { return optionalValue<WorkspaceEdit>(editKey); } + std::optional<WorkspaceEdit> edit() const { return optionalValue<WorkspaceEdit>(editKey); } void setEdit(const WorkspaceEdit &edit) { insert(editKey, edit); } void clearEdit() { remove(editKey); } - Utils::optional<Command> command() const { return optionalValue<Command>(commandKey); } + std::optional<Command> command() const { return optionalValue<Command>(commandKey); } void setCommand(const Command &command) { insert(commandKey, command); } void clearCommand() { remove(commandKey); } @@ -472,11 +472,11 @@ public: Range range() const { return typedValue<Range>(rangeKey); } void setRange(const Range &range) { insert(rangeKey, range); } - Utils::optional<Command> command() const { return optionalValue<Command>(commandKey); } + std::optional<Command> command() const { return optionalValue<Command>(commandKey); } void setCommand(const Command &command) { insert(commandKey, command); } void clearCommand() { remove(commandKey); } - Utils::optional<QJsonValue> data() const; + std::optional<QJsonValue> data() const; void setData(const QJsonValue &data) { insert(dataKey, data); } void clearData() { remove(dataKey); } @@ -509,11 +509,11 @@ public: Range range() const { return typedValue<Range>(rangeKey); } void setRange(const Range &range) { insert(rangeKey, range); } - Utils::optional<DocumentUri> target() const; + std::optional<DocumentUri> target() const; void setTarget(const DocumentUri &target) { insert(targetKey, target.toString()); } void clearTarget() { remove(targetKey); } - Utils::optional<QJsonValue> data() const; + std::optional<QJsonValue> data() const; void setData(const QJsonValue &data) { insert(dataKey, data); } void clearData() { remove(dataKey); } @@ -614,11 +614,11 @@ public: QString label() const { return typedValue<QString>(labelKey); } void setLabel(const QString &label) { insert(labelKey, label); } - Utils::optional<TextEdit> textEdit() const { return optionalValue<TextEdit>(textEditKey); } + std::optional<TextEdit> textEdit() const { return optionalValue<TextEdit>(textEditKey); } void setTextEdit(const TextEdit &textEdit) { insert(textEditKey, textEdit); } void clearTextEdit() { remove(textEditKey); } - Utils::optional<QList<TextEdit>> additionalTextEdits() const + std::optional<QList<TextEdit>> additionalTextEdits() const { return optionalArray<TextEdit>(additionalTextEditsKey); } void setAdditionalTextEdits(const QList<TextEdit> &additionalTextEdits) { insertArray(additionalTextEditsKey, additionalTextEdits); } @@ -659,19 +659,19 @@ public: bool insertSpace() const { return typedValue<bool>(insertSpaceKey); } void setInsertSpace(bool insertSpace) { insert(insertSpaceKey, insertSpace); } - Utils::optional<bool> trimTrailingWhitespace() const + std::optional<bool> trimTrailingWhitespace() const { return optionalValue<bool>(trimTrailingWhitespaceKey); } void setTrimTrailingWhitespace(bool trimTrailingWhitespace) { insert(trimTrailingWhitespaceKey, trimTrailingWhitespace); } void clearTrimTrailingWhitespace() { remove(trimTrailingWhitespaceKey); } - Utils::optional<bool> insertFinalNewline() const + std::optional<bool> insertFinalNewline() const { return optionalValue<bool>(insertFinalNewlineKey); } void setInsertFinalNewline(bool insertFinalNewline) { insert(insertFinalNewlineKey, insertFinalNewline); } void clearInsertFinalNewline() { remove(insertFinalNewlineKey); } - Utils::optional<bool> trimFinalNewlines() const + std::optional<bool> trimFinalNewlines() const { return optionalValue<bool>(trimFinalNewlinesKey); } void setTrimFinalNewlines(bool trimFinalNewlines) { insert(trimFinalNewlinesKey, trimFinalNewlines); } diff --git a/src/libs/languageserverprotocol/lsptypes.cpp b/src/libs/languageserverprotocol/lsptypes.cpp index 7db90d6fe7..c2810c9520 100644 --- a/src/libs/languageserverprotocol/lsptypes.cpp +++ b/src/libs/languageserverprotocol/lsptypes.cpp @@ -17,24 +17,24 @@ namespace LanguageServerProtocol { -Utils::optional<DiagnosticSeverity> Diagnostic::severity() const +std::optional<DiagnosticSeverity> Diagnostic::severity() const { if (auto val = optionalValue<int>(severityKey)) - return Utils::make_optional(static_cast<DiagnosticSeverity>(*val)); - return Utils::nullopt; + return std::make_optional(static_cast<DiagnosticSeverity>(*val)); + return std::nullopt; } -Utils::optional<Diagnostic::Code> Diagnostic::code() const +std::optional<Diagnostic::Code> Diagnostic::code() const { QJsonValue codeValue = value(codeKey); auto it = find(codeKey); if (codeValue.isUndefined()) - return Utils::nullopt; + return std::nullopt; QJsonValue::Type type = it.value().type(); if (type != QJsonValue::String && type != QJsonValue::Double) - return Utils::make_optional(Code(QString())); - return Utils::make_optional(codeValue.isDouble() ? Code(codeValue.toInt()) - : Code(codeValue.toString())); + return std::make_optional(Code(QString())); + return std::make_optional(codeValue.isDouble() ? Code(codeValue.toInt()) + : Code(codeValue.toString())); } void Diagnostic::setCode(const Diagnostic::Code &code) @@ -42,16 +42,16 @@ void Diagnostic::setCode(const Diagnostic::Code &code) insertVariant<int, QString>(codeKey, code); } -Utils::optional<WorkspaceEdit::Changes> WorkspaceEdit::changes() const +std::optional<WorkspaceEdit::Changes> WorkspaceEdit::changes() const { auto it = find(changesKey); if (it == end()) - return Utils::nullopt; + return std::nullopt; const QJsonObject &changesObject = it.value().toObject(); Changes changesResult; for (const QString &key : changesObject.keys()) changesResult[DocumentUri::fromProtocol(key)] = LanguageClientArray<TextEdit>(changesObject.value(key)).toList(); - return Utils::make_optional(changesResult); + return std::make_optional(changesResult); } void WorkspaceEdit::setChanges(const Changes &changes) @@ -325,7 +325,7 @@ QString expressionForGlob(QString globPattern) bool DocumentFilter::applies(const Utils::FilePath &fileName, const Utils::MimeType &mimeType) const { - if (Utils::optional<QString> _pattern = pattern()) { + if (std::optional<QString> _pattern = pattern()) { QRegularExpression::PatternOption option = QRegularExpression::NoPatternOption; if (fileName.caseSensitivity() == Qt::CaseInsensitive) option = QRegularExpression::CaseInsensitiveOption; @@ -333,7 +333,7 @@ bool DocumentFilter::applies(const Utils::FilePath &fileName, const Utils::MimeT if (regexp.isValid() && regexp.match(fileName.toString()).hasMatch()) return true; } - if (Utils::optional<QString> _lang = language()) { + if (std::optional<QString> _lang = language()) { auto match = [&_lang](const Utils::MimeType &mimeType){ return *_lang == TextDocumentItem::mimeTypeToLanguageId(mimeType); }; diff --git a/src/libs/languageserverprotocol/lsptypes.h b/src/libs/languageserverprotocol/lsptypes.h index d65e30b869..0c848130ce 100644 --- a/src/libs/languageserverprotocol/lsptypes.h +++ b/src/libs/languageserverprotocol/lsptypes.h @@ -10,7 +10,6 @@ #include <utils/filepath.h> #include <utils/link.h> #include <utils/mimeutils.h> -#include <utils/optional.h> #include <utils/textutils.h> #include <QTextCursor> @@ -19,6 +18,7 @@ #include <QList> #include <functional> +#include <optional> #include <variant> namespace LanguageServerProtocol { @@ -162,20 +162,20 @@ public: // The diagnostic's severity. Can be omitted. If omitted it is up to the // client to interpret diagnostics as error, warning, info or hint. - Utils::optional<DiagnosticSeverity> severity() const; + std::optional<DiagnosticSeverity> severity() const; void setSeverity(const DiagnosticSeverity &severity) { insert(severityKey, static_cast<int>(severity)); } void clearSeverity() { remove(severityKey); } // The diagnostic's code, which might appear in the user interface. using Code = std::variant<int, QString>; - Utils::optional<Code> code() const; + std::optional<Code> code() const; void setCode(const Code &code); void clearCode() { remove(codeKey); } // A human-readable string describing the source of this // diagnostic, e.g. 'typescript' or 'super lint'. - Utils::optional<QString> source() const + std::optional<QString> source() const { return optionalValue<QString>(sourceKey); } void setSource(const QString &source) { insert(sourceKey, source); } void clearSource() { remove(sourceKey); } @@ -204,7 +204,7 @@ public: void clearCommand() { remove(commandKey); } // Arguments that the command handler should be invoked with. - Utils::optional<QJsonArray> arguments() const { return typedValue<QJsonArray>(argumentsKey); } + std::optional<QJsonArray> arguments() const { return typedValue<QJsonArray>(argumentsKey); } void setArguments(const QJsonArray &arguments) { insert(argumentsKey, arguments); } void clearArguments() { remove(argumentsKey); } @@ -291,7 +291,7 @@ public: // Holds changes to existing resources. using Changes = QMap<DocumentUri, QList<TextEdit>>; - Utils::optional<Changes> changes() const; + std::optional<Changes> changes() const; void setChanges(const Changes &changes); /* @@ -303,7 +303,7 @@ public: * Note: If the client can handle versioned document edits and if documentChanges are present, * the latter are preferred over changes. */ - Utils::optional<QList<TextDocumentEdit>> documentChanges() const + std::optional<QList<TextDocumentEdit>> documentChanges() const { return optionalArray<TextDocumentEdit>(documentChangesKey); } void setDocumentChanges(const QList<TextDocumentEdit> &changes) { insertArray(documentChangesKey, changes); } @@ -363,12 +363,12 @@ public: using JsonObject::JsonObject; // A language id, like `typescript`. - Utils::optional<QString> language() const { return optionalValue<QString>(languageKey); } + std::optional<QString> language() const { return optionalValue<QString>(languageKey); } void setLanguage(const QString &language) { insert(languageKey, language); } void clearLanguage() { remove(languageKey); } // A Uri [scheme](#Uri.scheme), like `file` or `untitled`. - Utils::optional<QString> scheme() const { return optionalValue<QString>(schemeKey); } + std::optional<QString> scheme() const { return optionalValue<QString>(schemeKey); } void setScheme(const QString &scheme) { insert(schemeKey, scheme); } void clearScheme() { remove(schemeKey); } @@ -387,7 +387,7 @@ public: * (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but * not `example.0`) */ - Utils::optional<QString> pattern() const { return optionalValue<QString>(patternKey); } + std::optional<QString> pattern() const { return optionalValue<QString>(patternKey); } void setPattern(const QString &pattern) { insert(patternKey, pattern); } void clearPattern() { remove(patternKey); } @@ -478,14 +478,14 @@ public: int kind() const { return typedValue<int>(kindKey); } void setKind(int kind) { insert(kindKey, kind); } - Utils::optional<bool> deprecated() const { return optionalValue<bool>(deprecatedKey); } + std::optional<bool> deprecated() const { return optionalValue<bool>(deprecatedKey); } void setDeprecated(bool deprecated) { insert(deprecatedKey, deprecated); } void clearDeprecated() { remove(deprecatedKey); } Location location() const { return typedValue<Location>(locationKey); } void setLocation(const Location &location) { insert(locationKey, location); } - Utils::optional<QString> containerName() const + std::optional<QString> containerName() const { return optionalValue<QString>(containerNameKey); } void setContainerName(const QString &containerName) { insert(containerNameKey, containerName); } void clearContainerName() { remove(containerNameKey); } @@ -502,14 +502,14 @@ public: QString name() const { return typedValue<QString>(nameKey); } void setName(const QString &name) { insert(nameKey, name); } - Utils::optional<QString> detail() const { return optionalValue<QString>(detailKey); } + std::optional<QString> detail() const { return optionalValue<QString>(detailKey); } void setDetail(const QString &detail) { insert(detailKey, detail); } void clearDetail() { remove(detailKey); } int kind() const { return typedValue<int>(kindKey); } void setKind(int kind) { insert(kindKey, kind); } - Utils::optional<bool> deprecated() const { return optionalValue<bool>(deprecatedKey); } + std::optional<bool> deprecated() const { return optionalValue<bool>(deprecatedKey); } void setDeprecated(bool deprecated) { insert(deprecatedKey, deprecated); } void clearDeprecated() { remove(deprecatedKey); } @@ -519,7 +519,7 @@ public: Range selectionRange() const { return typedValue<Range>(selectionRangeKey); } void setSelectionRange(Range selectionRange) { insert(selectionRangeKey, selectionRange); } - Utils::optional<QList<DocumentSymbol>> children() const + std::optional<QList<DocumentSymbol>> children() const { return optionalArray<DocumentSymbol>(childrenKey); } void setChildren(QList<DocumentSymbol> children) { insertArray(childrenKey, children); } void clearChildren() { remove(childrenKey); } diff --git a/src/libs/languageserverprotocol/lsputils.h b/src/libs/languageserverprotocol/lsputils.h index 8e2af619cc..874bc0bc98 100644 --- a/src/libs/languageserverprotocol/lsputils.h +++ b/src/libs/languageserverprotocol/lsputils.h @@ -6,13 +6,13 @@ #include "languageserverprotocol_global.h" #include <utils/algorithm.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <QJsonArray> #include <QJsonObject> #include <QLoggingCategory> +#include <optional> #include <variant> namespace LanguageServerProtocol { diff --git a/src/libs/languageserverprotocol/messages.h b/src/libs/languageserverprotocol/messages.h index f1c38f9cab..a6dde81c6e 100644 --- a/src/libs/languageserverprotocol/messages.h +++ b/src/libs/languageserverprotocol/messages.h @@ -55,7 +55,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ShowMessageRequestParams : public ShowMessag public: using ShowMessageParams::ShowMessageParams; - Utils::optional<QList<MessageActionItem>> actions() const + std::optional<QList<MessageActionItem>> actions() const { return optionalArray<MessageActionItem>(actionsKey); } void setActions(const QList<MessageActionItem> &actions) { insertArray(actionsKey, actions); } void clearActions() { remove(actionsKey); } diff --git a/src/libs/languageserverprotocol/progresssupport.h b/src/libs/languageserverprotocol/progresssupport.h index 6c3180adba..d07b894729 100644 --- a/src/libs/languageserverprotocol/progresssupport.h +++ b/src/libs/languageserverprotocol/progresssupport.h @@ -31,7 +31,7 @@ public: * long running operation. * Clients that don't support cancellation can ignore the setting. */ - Utils::optional<bool> cancellable() const { return optionalValue<bool>(cancellableKey); } + std::optional<bool> cancellable() const { return optionalValue<bool>(cancellableKey); } void setCancellable(bool cancellable) { insert(cancellableKey, cancellable); } void clearCancellable() { remove(cancellableKey); } @@ -42,7 +42,7 @@ public: * Examples: "3/25 files", "project/src/module2", "node_modules/some_dep". * If unset, the previous progress message (if any) is still valid. */ - Utils::optional<QString> message() const { return optionalValue<QString>(messageKey); } + std::optional<QString> message() const { return optionalValue<QString>(messageKey); } void setMessage(const QString &message) { insert(messageKey, message); } void clearMessage() { remove(messageKey); } @@ -58,7 +58,7 @@ public: // Allthough percentage is defined as an uint by the protocol some server // return a double here. Be less strict and also use a double. // CAUTION: the range is still 0 - 100 and not 0 - 1 - Utils::optional<double> percentage() const { return optionalValue<double>(percentageKey); } + std::optional<double> percentage() const { return optionalValue<double>(percentageKey); } void setPercentage(double percentage) { insert(percentageKey, percentage); } void clearPercentage() { remove(percentageKey); } }; @@ -88,7 +88,7 @@ public: * Optional, a final message indicating to for example indicate the outcome * of the operation. */ - Utils::optional<QString> message() const { return optionalValue<QString>(messageKey); } + std::optional<QString> message() const { return optionalValue<QString>(messageKey); } void setMessage(const QString &message) { insert(messageKey, message); } void clearMessage() { remove(messageKey); } }; diff --git a/src/libs/languageserverprotocol/semantictokens.h b/src/libs/languageserverprotocol/semantictokens.h index 6025a6d683..6cc303b84f 100644 --- a/src/libs/languageserverprotocol/semantictokens.h +++ b/src/libs/languageserverprotocol/semantictokens.h @@ -125,7 +125,7 @@ public: * A server can then instead of computing all semantic tokens again simply * send a delta. */ - Utils::optional<QString> resultId() const { return optionalValue<QString>(resultIdKey); } + std::optional<QString> resultId() const { return optionalValue<QString>(resultIdKey); } void setResultId(const QString &resultId) { insert(resultIdKey, resultId); } void clearResultId() { remove(resultIdKey); } @@ -169,7 +169,7 @@ public: int deleteCount() const { return typedValue<int>(deleteCountKey); } void setDeleteCount(int deleteCount) { insert(deleteCountKey, deleteCount); } - Utils::optional<QList<int>> data() const { return optionalArray<int>(dataKey); } + std::optional<QList<int>> data() const { return optionalArray<int>(dataKey); } void setData(const QList<int> &value) { insertArray(dataKey, value); } void clearData() { remove(dataKey); } diff --git a/src/libs/languageserverprotocol/servercapabilities.cpp b/src/libs/languageserverprotocol/servercapabilities.cpp index 6ba697f5b3..1573f49285 100644 --- a/src/libs/languageserverprotocol/servercapabilities.cpp +++ b/src/libs/languageserverprotocol/servercapabilities.cpp @@ -5,13 +5,14 @@ namespace LanguageServerProtocol { -Utils::optional<ServerCapabilities::TextDocumentSync> ServerCapabilities::textDocumentSync() const +std::optional<ServerCapabilities::TextDocumentSync> ServerCapabilities::textDocumentSync() const { const QJsonValue &sync = value(textDocumentSyncKey); if (sync.isUndefined()) - return Utils::nullopt; - return Utils::make_optional(sync.isDouble() ? TextDocumentSync(sync.toInt()) - : TextDocumentSync(TextDocumentSyncOptions(sync.toObject()))); + return std::nullopt; + return std::make_optional(sync.isDouble() + ? TextDocumentSync(sync.toInt()) + : TextDocumentSync(TextDocumentSyncOptions(sync.toObject()))); } void ServerCapabilities::setTextDocumentSync(const ServerCapabilities::TextDocumentSync &textDocumentSync) @@ -21,27 +22,27 @@ void ServerCapabilities::setTextDocumentSync(const ServerCapabilities::TextDocum TextDocumentSyncKind ServerCapabilities::textDocumentSyncKindHelper() { - if (Utils::optional<TextDocumentSync> sync = textDocumentSync()) { + if (std::optional<TextDocumentSync> sync = textDocumentSync()) { if (auto kind = std::get_if<int>(&*sync)) return static_cast<TextDocumentSyncKind>(*kind); if (auto options = std::get_if<TextDocumentSyncOptions>(&*sync)) { - if (const Utils::optional<int> &change = options->change()) + if (const std::optional<int> &change = options->change()) return static_cast<TextDocumentSyncKind>(*change); } } return TextDocumentSyncKind::None; } -Utils::optional<std::variant<bool, WorkDoneProgressOptions>> ServerCapabilities::hoverProvider() +std::optional<std::variant<bool, WorkDoneProgressOptions>> ServerCapabilities::hoverProvider() const { using RetType = std::variant<bool, WorkDoneProgressOptions>; const QJsonValue &provider = value(hoverProviderKey); if (provider.isBool()) - return Utils::make_optional(RetType(provider.toBool())); + return std::make_optional(RetType(provider.toBool())); if (provider.isObject()) - return Utils::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); - return Utils::nullopt; + return std::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); + return std::nullopt; } void ServerCapabilities::setHoverProvider( @@ -50,15 +51,16 @@ void ServerCapabilities::setHoverProvider( insertVariant<bool, WorkDoneProgressOptions>(hoverProviderKey, hoverProvider); } -Utils::optional<std::variant<bool, ServerCapabilities::RegistrationOptions>> +std::optional<std::variant<bool, ServerCapabilities::RegistrationOptions>> ServerCapabilities::typeDefinitionProvider() const { using RetType = std::variant<bool, ServerCapabilities::RegistrationOptions>; const QJsonValue &provider = value(typeDefinitionProviderKey); if (provider.isUndefined() || !(provider.isBool() || provider.isObject())) - return Utils::nullopt; - return Utils::make_optional(provider.isBool() ? RetType(provider.toBool()) - : RetType(RegistrationOptions(provider.toObject()))); + return std::nullopt; + return std::make_optional(provider.isBool() + ? RetType(provider.toBool()) + : RetType(RegistrationOptions(provider.toObject()))); } void ServerCapabilities::setTypeDefinitionProvider( @@ -68,15 +70,16 @@ void ServerCapabilities::setTypeDefinitionProvider( typeDefinitionProvider); } -Utils::optional<std::variant<bool, ServerCapabilities::RegistrationOptions>> +std::optional<std::variant<bool, ServerCapabilities::RegistrationOptions>> ServerCapabilities::implementationProvider() const { using RetType = std::variant<bool, ServerCapabilities::RegistrationOptions>; const QJsonValue &provider = value(implementationProviderKey); if (provider.isUndefined() || !(provider.isBool() || provider.isObject())) - return Utils::nullopt; - return Utils::make_optional(provider.isBool() ? RetType(provider.toBool()) - : RetType(RegistrationOptions(provider.toObject()))); + return std::nullopt; + return std::make_optional(provider.isBool() + ? RetType(provider.toBool()) + : RetType(RegistrationOptions(provider.toObject()))); } void ServerCapabilities::setImplementationProvider( @@ -85,16 +88,16 @@ void ServerCapabilities::setImplementationProvider( insertVariant<bool, RegistrationOptions>(implementationProviderKey, implementationProvider); } -Utils::optional<std::variant<bool, WorkDoneProgressOptions>> +std::optional<std::variant<bool, WorkDoneProgressOptions>> ServerCapabilities::referencesProvider() const { using RetType = std::variant<bool, WorkDoneProgressOptions>; const QJsonValue &provider = value(referencesProviderKey); if (provider.isBool()) - return Utils::make_optional(RetType(provider.toBool())); + return std::make_optional(RetType(provider.toBool())); if (provider.isObject()) - return Utils::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); - return Utils::nullopt; + return std::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); + return std::nullopt; } void ServerCapabilities::setReferencesProvider( @@ -104,16 +107,16 @@ void ServerCapabilities::setReferencesProvider( referencesProvider); } -Utils::optional<std::variant<bool, WorkDoneProgressOptions>> +std::optional<std::variant<bool, WorkDoneProgressOptions>> ServerCapabilities::documentHighlightProvider() const { using RetType = std::variant<bool, WorkDoneProgressOptions>; const QJsonValue &provider = value(documentHighlightProviderKey); if (provider.isBool()) - return Utils::make_optional(RetType(provider.toBool())); + return std::make_optional(RetType(provider.toBool())); if (provider.isObject()) - return Utils::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); - return Utils::nullopt; + return std::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); + return std::nullopt; } void ServerCapabilities::setDocumentHighlightProvider( @@ -123,16 +126,16 @@ void ServerCapabilities::setDocumentHighlightProvider( documentHighlightProvider); } -Utils::optional<std::variant<bool, WorkDoneProgressOptions>> +std::optional<std::variant<bool, WorkDoneProgressOptions>> ServerCapabilities::documentSymbolProvider() const { using RetType = std::variant<bool, WorkDoneProgressOptions>; const QJsonValue &provider = value(documentSymbolProviderKey); if (provider.isBool()) - return Utils::make_optional(RetType(provider.toBool())); + return std::make_optional(RetType(provider.toBool())); if (provider.isObject()) - return Utils::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); - return Utils::nullopt; + return std::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); + return std::nullopt; } void ServerCapabilities::setDocumentSymbolProvider( @@ -142,7 +145,7 @@ void ServerCapabilities::setDocumentSymbolProvider( documentSymbolProvider); } -Utils::optional<SemanticTokensOptions> ServerCapabilities::semanticTokensProvider() const +std::optional<SemanticTokensOptions> ServerCapabilities::semanticTokensProvider() const { return optionalValue<SemanticTokensOptions>(semanticTokensProviderKey); } @@ -153,16 +156,16 @@ void ServerCapabilities::setSemanticTokensProvider( insert(semanticTokensProviderKey, semanticTokensProvider); } -Utils::optional<std::variant<bool, WorkDoneProgressOptions>> +std::optional<std::variant<bool, WorkDoneProgressOptions>> ServerCapabilities::workspaceSymbolProvider() const { using RetType = std::variant<bool, WorkDoneProgressOptions>; const QJsonValue &provider = value(workspaceSymbolProviderKey); if (provider.isBool()) - return Utils::make_optional(RetType(provider.toBool())); + return std::make_optional(RetType(provider.toBool())); if (provider.isObject()) - return Utils::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); - return Utils::nullopt; + return std::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); + return std::nullopt; } void ServerCapabilities::setWorkspaceSymbolProvider( @@ -172,29 +175,29 @@ void ServerCapabilities::setWorkspaceSymbolProvider( workspaceSymbolProvider); } -Utils::optional<std::variant<bool, CodeActionOptions>> ServerCapabilities::codeActionProvider() const +std::optional<std::variant<bool, CodeActionOptions>> ServerCapabilities::codeActionProvider() const { const QJsonValue &provider = value(codeActionProviderKey); if (provider.isBool()) - return Utils::make_optional(std::variant<bool, CodeActionOptions>(provider.toBool())); + return std::make_optional(std::variant<bool, CodeActionOptions>(provider.toBool())); if (provider.isObject()) { CodeActionOptions options(provider); if (options.isValid()) - return Utils::make_optional(std::variant<bool, CodeActionOptions>(options)); + return std::make_optional(std::variant<bool, CodeActionOptions>(options)); } - return Utils::nullopt; + return std::nullopt; } -Utils::optional<std::variant<bool, WorkDoneProgressOptions>> +std::optional<std::variant<bool, WorkDoneProgressOptions>> ServerCapabilities::documentFormattingProvider() const { using RetType = std::variant<bool, WorkDoneProgressOptions>; const QJsonValue &provider = value(documentFormattingProviderKey); if (provider.isBool()) - return Utils::make_optional(RetType(provider.toBool())); + return std::make_optional(RetType(provider.toBool())); if (provider.isObject()) - return Utils::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); - return Utils::nullopt; + return std::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); + return std::nullopt; } void ServerCapabilities::setDocumentFormattingProvider( @@ -204,16 +207,16 @@ void ServerCapabilities::setDocumentFormattingProvider( documentFormattingProvider); } -Utils::optional<std::variant<bool, WorkDoneProgressOptions>> +std::optional<std::variant<bool, WorkDoneProgressOptions>> ServerCapabilities::documentRangeFormattingProvider() const { using RetType = std::variant<bool, WorkDoneProgressOptions>; const QJsonValue &provider = value(documentRangeFormattingProviderKey); if (provider.isBool()) - return Utils::make_optional(RetType(provider.toBool())); + return std::make_optional(RetType(provider.toBool())); if (provider.isObject()) - return Utils::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); - return Utils::nullopt; + return std::make_optional(RetType(WorkDoneProgressOptions(provider.toObject()))); + return std::nullopt; } void ServerCapabilities::setDocumentRangeFormattingProvider( @@ -223,7 +226,7 @@ void ServerCapabilities::setDocumentRangeFormattingProvider( documentRangeFormattingProvider); } -Utils::optional<std::variant<ServerCapabilities::RenameOptions, bool>> ServerCapabilities::renameProvider() const +std::optional<std::variant<ServerCapabilities::RenameOptions, bool>> ServerCapabilities::renameProvider() const { using RetType = std::variant<ServerCapabilities::RenameOptions, bool>; const QJsonValue &localValue = value(renameProviderKey); @@ -231,7 +234,7 @@ Utils::optional<std::variant<ServerCapabilities::RenameOptions, bool>> ServerCap return RetType(localValue.toBool()); if (localValue.isObject()) return RetType(RenameOptions(localValue.toObject())); - return Utils::nullopt; + return std::nullopt; } void ServerCapabilities::setRenameProvider(std::variant<ServerCapabilities::RenameOptions, bool> renameProvider) @@ -239,7 +242,7 @@ void ServerCapabilities::setRenameProvider(std::variant<ServerCapabilities::Rena insertVariant<RenameOptions, bool>(renameProviderKey, renameProvider); } -Utils::optional<std::variant<bool, JsonObject>> ServerCapabilities::colorProvider() const +std::optional<std::variant<bool, JsonObject>> ServerCapabilities::colorProvider() const { using RetType = std::variant<bool, JsonObject>; const QJsonValue &localValue = value(colorProviderKey); @@ -247,7 +250,7 @@ Utils::optional<std::variant<bool, JsonObject>> ServerCapabilities::colorProvide return RetType(localValue.toBool()); if (localValue.isObject()) return RetType(JsonObject(localValue.toObject())); - return Utils::nullopt; + return std::nullopt; } void ServerCapabilities::setColorProvider(std::variant<bool, JsonObject> colorProvider) @@ -255,15 +258,15 @@ void ServerCapabilities::setColorProvider(std::variant<bool, JsonObject> colorPr insertVariant<bool, JsonObject>(renameProviderKey, colorProvider); } -Utils::optional<std::variant<QString, bool> > +std::optional<std::variant<QString, bool> > ServerCapabilities::WorkspaceServerCapabilities::WorkspaceFoldersCapabilities::changeNotifications() const { using RetType = std::variant<QString, bool>; const QJsonValue &change = value(changeNotificationsKey); if (change.isUndefined()) - return Utils::nullopt; - return Utils::make_optional(change.isBool() ? RetType(change.toBool()) - : RetType(change.toString())); + return std::nullopt; + return std::make_optional(change.isBool() ? RetType(change.toBool()) + : RetType(change.toString())); } void ServerCapabilities::WorkspaceServerCapabilities::WorkspaceFoldersCapabilities::setChangeNotifications( @@ -293,7 +296,7 @@ bool CodeActionOptions::isValid() const return WorkDoneProgressOptions::isValid() && contains(codeActionKindsKey); } -Utils::optional<std::variant<bool, QJsonObject>> SemanticTokensOptions::range() const +std::optional<std::variant<bool, QJsonObject>> SemanticTokensOptions::range() const { using RetType = std::variant<bool, QJsonObject>; const QJsonValue &rangeOptions = value(rangeKey); @@ -301,7 +304,7 @@ Utils::optional<std::variant<bool, QJsonObject>> SemanticTokensOptions::range() return RetType(rangeOptions.toBool()); if (rangeOptions.isObject()) return RetType(rangeOptions.toObject()); - return Utils::nullopt; + return std::nullopt; } void SemanticTokensOptions::setRange(const std::variant<bool, QJsonObject> &range) @@ -309,7 +312,7 @@ void SemanticTokensOptions::setRange(const std::variant<bool, QJsonObject> &rang insertVariant<bool, QJsonObject>(rangeKey, range); } -Utils::optional<std::variant<bool, SemanticTokensOptions::FullSemanticTokenOptions>> +std::optional<std::variant<bool, SemanticTokensOptions::FullSemanticTokenOptions>> SemanticTokensOptions::full() const { using RetType = std::variant<bool, SemanticTokensOptions::FullSemanticTokenOptions>; @@ -318,7 +321,7 @@ SemanticTokensOptions::full() const return RetType(fullOptions.toBool()); if (fullOptions.isObject()) return RetType(FullSemanticTokenOptions(fullOptions.toObject())); - return Utils::nullopt; + return std::nullopt; } void SemanticTokensOptions::setFull( diff --git a/src/libs/languageserverprotocol/servercapabilities.h b/src/libs/languageserverprotocol/servercapabilities.h index c6cfe96ca6..35028760d1 100644 --- a/src/libs/languageserverprotocol/servercapabilities.h +++ b/src/libs/languageserverprotocol/servercapabilities.h @@ -13,7 +13,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT WorkDoneProgressOptions : public JsonObject public: using JsonObject::JsonObject; - Utils::optional<bool> workDoneProgress() const { return optionalValue<bool>(workDoneProgressKey); } + std::optional<bool> workDoneProgress() const { return optionalValue<bool>(workDoneProgressKey); } void setWorkDoneProgress(bool workDoneProgress) { insert(workDoneProgressKey, workDoneProgress); } void clearWorkDoneProgress() { remove(workDoneProgressKey); } }; @@ -23,7 +23,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ResolveProviderOption : public JsonObject public: using JsonObject::JsonObject; - Utils::optional<bool> resolveProvider() const { return optionalValue<bool>(resolveProviderKey); } + std::optional<bool> resolveProvider() const { return optionalValue<bool>(resolveProviderKey); } void setResolveProvider(bool resolveProvider) { insert(resolveProviderKey, resolveProvider); } void clearResolveProvider() { remove(resolveProviderKey); } }; @@ -50,7 +50,7 @@ public: using JsonObject::JsonObject; // The client is supposed to include the content on save. - Utils::optional<bool> includeText() const { return optionalValue<bool>(includeTextKey); } + std::optional<bool> includeText() const { return optionalValue<bool>(includeTextKey); } void setIncludeText(bool includeText) { insert(includeTextKey, includeText); } void clearIncludeText() { remove(includeTextKey); } }; @@ -61,30 +61,30 @@ public: using JsonObject::JsonObject; // Open and close notifications are sent to the server. - Utils::optional<bool> openClose() const { return optionalValue<bool>(openCloseKey); } + std::optional<bool> openClose() const { return optionalValue<bool>(openCloseKey); } void setOpenClose(bool openClose) { insert(openCloseKey, openClose); } void clearOpenClose() { remove(openCloseKey); } // Change notifications are sent to the server. See TextDocumentSyncKind.None, // TextDocumentSyncKind.Full and TextDocumentSyncKind.Incremental. - Utils::optional<int> change() const { return optionalValue<int>(changeKey); } + std::optional<int> change() const { return optionalValue<int>(changeKey); } void setChange(int change) { insert(changeKey, change); } void clearChange() { remove(changeKey); } // Will save notifications are sent to the server. - Utils::optional<bool> willSave() const { return optionalValue<bool>(willSaveKey); } + std::optional<bool> willSave() const { return optionalValue<bool>(willSaveKey); } void setWillSave(bool willSave) { insert(willSaveKey, willSave); } void clearWillSave() { remove(willSaveKey); } // Will save wait until requests are sent to the server. - Utils::optional<bool> willSaveWaitUntil() const + std::optional<bool> willSaveWaitUntil() const { return optionalValue<bool>(willSaveWaitUntilKey); } void setWillSaveWaitUntil(bool willSaveWaitUntil) { insert(willSaveWaitUntilKey, willSaveWaitUntil); } void clearWillSaveWaitUntil() { remove(willSaveWaitUntilKey); } // Save notifications are sent to the server. - Utils::optional<SaveOptions> save() const { return optionalValue<SaveOptions>(saveKey); } + std::optional<SaveOptions> save() const { return optionalValue<SaveOptions>(saveKey); } void setSave(const SaveOptions &save) { insert(saveKey, save); } void clearSave() { remove(saveKey); } }; @@ -130,7 +130,7 @@ public: void setLegend(const SemanticTokensLegend &legend) { insert(legendKey, legend); } /// Server supports providing semantic tokens for a specific range of a document. - Utils::optional<std::variant<bool, QJsonObject>> range() const; + std::optional<std::variant<bool, QJsonObject>> range() const; void setRange(const std::variant<bool, QJsonObject> &range); void clearRange() { remove(rangeKey); } @@ -140,13 +140,13 @@ public: using JsonObject::JsonObject; /// The server supports deltas for full documents. - Utils::optional<bool> delta() const { return optionalValue<bool>(deltaKey); } + std::optional<bool> delta() const { return optionalValue<bool>(deltaKey); } void setDelta(bool delta) { insert(deltaKey, delta); } void clearDelta() { remove(deltaKey); } }; /// Server supports providing semantic tokens for a full document. - Utils::optional<std::variant<bool, FullSemanticTokenOptions>> full() const; + std::optional<std::variant<bool, FullSemanticTokenOptions>> full() const; void setFull(const std::variant<bool, FullSemanticTokenOptions> &full); void clearFull() { remove(fullKey); } @@ -168,13 +168,13 @@ public: using WorkDoneProgressOptions::WorkDoneProgressOptions; // The characters that trigger completion automatically. - Utils::optional<QList<QString>> triggerCharacters() const + std::optional<QList<QString>> triggerCharacters() const { return optionalArray<QString>(triggerCharactersKey); } void setTriggerCharacters(const QList<QString> &triggerCharacters) { insertArray(triggerCharactersKey, triggerCharacters); } void clearTriggerCharacters() { remove(triggerCharactersKey); } - Utils::optional<bool> resolveProvider() const { return optionalValue<bool>(resolveProviderKey); } + std::optional<bool> resolveProvider() const { return optionalValue<bool>(resolveProviderKey); } void setResolveProvider(bool resolveProvider) { insert(resolveProviderKey, resolveProvider); } void clearResolveProvider() { remove(resolveProviderKey); } }; @@ -185,7 +185,7 @@ public: using WorkDoneProgressOptions::WorkDoneProgressOptions; // The characters that trigger signature help automatically. - Utils::optional<QList<QString>> triggerCharacters() const + std::optional<QList<QString>> triggerCharacters() const { return optionalArray<QString>(triggerCharactersKey); } void setTriggerCharacters(const QList<QString> &triggerCharacters) { insertArray(triggerCharactersKey, triggerCharacters); } @@ -205,7 +205,7 @@ public: { insert(firstTriggerCharacterKey, firstTriggerCharacter); } // More trigger characters. - Utils::optional<QList<QString>> moreTriggerCharacter() const + std::optional<QList<QString>> moreTriggerCharacter() const { return optionalArray<QString>(moreTriggerCharacterKey); } void setMoreTriggerCharacter(const QList<QString> &moreTriggerCharacter) { insertArray(moreTriggerCharacterKey, moreTriggerCharacter); } @@ -236,7 +236,7 @@ public: // The id used to register the request. The id can be used to deregister // the request again. See also Registration#id. - Utils::optional<QString> id() const { return optionalValue<QString>(idKey); } + std::optional<QString> id() const { return optionalValue<QString>(idKey); } void setId(const QString &id) { insert(idKey, id); } void clearId() { remove(idKey); } }; @@ -244,33 +244,33 @@ public: // Defines how text documents are synced. Is either a detailed structure defining each // notification or for backwards compatibility the TextDocumentSyncKind number. using TextDocumentSync = std::variant<TextDocumentSyncOptions, int>; - Utils::optional<TextDocumentSync> textDocumentSync() const; + std::optional<TextDocumentSync> textDocumentSync() const; void setTextDocumentSync(const TextDocumentSync &textDocumentSync); void clearTextDocumentSync() { remove(textDocumentSyncKey); } TextDocumentSyncKind textDocumentSyncKindHelper(); // The server provides hover support. - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> hoverProvider() const; + std::optional<std::variant<bool, WorkDoneProgressOptions>> hoverProvider() const; void setHoverProvider(const std::variant<bool, WorkDoneProgressOptions> &hoverProvider); void clearHoverProvider() { remove(hoverProviderKey); } // The server provides completion support. - Utils::optional<CompletionOptions> completionProvider() const + std::optional<CompletionOptions> completionProvider() const { return optionalValue<CompletionOptions>(completionProviderKey); } void setCompletionProvider(const CompletionOptions &completionProvider) { insert(completionProviderKey, completionProvider); } void clearCompletionProvider() { remove(completionProviderKey); } // The server provides signature help support. - Utils::optional<SignatureHelpOptions> signatureHelpProvider() const + std::optional<SignatureHelpOptions> signatureHelpProvider() const { return optionalValue<SignatureHelpOptions>(signatureHelpProviderKey); } void setSignatureHelpProvider(const SignatureHelpOptions &signatureHelpProvider) { insert(signatureHelpProviderKey, signatureHelpProvider); } void clearSignatureHelpProvider() { remove(signatureHelpProviderKey); } // The server provides goto definition support. - Utils::optional<bool> definitionProvider() const + std::optional<bool> definitionProvider() const { return optionalValue<bool>(definitionProviderKey); } void setDefinitionProvider(bool definitionProvider) { insert(definitionProviderKey, definitionProvider); } @@ -291,7 +291,7 @@ public: // The id used to register the request. The id can be used to deregister // the request again. See also Registration#id. - Utils::optional<QString> id() const { return optionalValue<QString>(idKey); } + std::optional<QString> id() const { return optionalValue<QString>(idKey); } void setId(const QString &id) { insert(idKey, id); } void clearId() { remove(idKey); } @@ -299,42 +299,42 @@ public: }; // The server provides Goto Type Definition support. - Utils::optional<std::variant<bool, RegistrationOptions>> typeDefinitionProvider() const; + std::optional<std::variant<bool, RegistrationOptions>> typeDefinitionProvider() const; void setTypeDefinitionProvider(const std::variant<bool, RegistrationOptions> &typeDefinitionProvider); void clearTypeDefinitionProvider() { remove(typeDefinitionProviderKey); } // The server provides Goto Implementation support. - Utils::optional<std::variant<bool, RegistrationOptions>> implementationProvider() const; + std::optional<std::variant<bool, RegistrationOptions>> implementationProvider() const; void setImplementationProvider(const std::variant<bool, RegistrationOptions> &implementationProvider); void clearImplementationProvider() { remove(implementationProviderKey); } // The server provides find references support. - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> referencesProvider() const; + std::optional<std::variant<bool, WorkDoneProgressOptions>> referencesProvider() const; void setReferencesProvider(const std::variant<bool, WorkDoneProgressOptions> &referencesProvider); void clearReferencesProvider() { remove(referencesProviderKey); } // The server provides document highlight support. - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> documentHighlightProvider() const; + std::optional<std::variant<bool, WorkDoneProgressOptions>> documentHighlightProvider() const; void setDocumentHighlightProvider( const std::variant<bool, WorkDoneProgressOptions> &documentHighlightProvider); void clearDocumentHighlightProvider() { remove(documentHighlightProviderKey); } // The server provides document symbol support. - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> documentSymbolProvider() const; + std::optional<std::variant<bool, WorkDoneProgressOptions>> documentSymbolProvider() const; void setDocumentSymbolProvider(std::variant<bool, WorkDoneProgressOptions> documentSymbolProvider); void clearDocumentSymbolProvider() { remove(documentSymbolProviderKey); } - Utils::optional<SemanticTokensOptions> semanticTokensProvider() const; + std::optional<SemanticTokensOptions> semanticTokensProvider() const; void setSemanticTokensProvider(const SemanticTokensOptions &semanticTokensProvider); void clearSemanticTokensProvider() { remove(semanticTokensProviderKey); } // The server provides workspace symbol support. - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> workspaceSymbolProvider() const; + std::optional<std::variant<bool, WorkDoneProgressOptions>> workspaceSymbolProvider() const; void setWorkspaceSymbolProvider(std::variant<bool, WorkDoneProgressOptions> workspaceSymbolProvider); void clearWorkspaceSymbolProvider() { remove(workspaceSymbolProviderKey); } // The server provides code actions. - Utils::optional<std::variant<bool, CodeActionOptions>> codeActionProvider() const; + std::optional<std::variant<bool, CodeActionOptions>> codeActionProvider() const; void setCodeActionProvider(bool codeActionProvider) { insert(codeActionProviderKey, codeActionProvider); } void setCodeActionProvider(CodeActionOptions options) @@ -342,20 +342,20 @@ public: void clearCodeActionProvider() { remove(codeActionProviderKey); } // The server provides code lens. - Utils::optional<CodeLensOptions> codeLensProvider() const + std::optional<CodeLensOptions> codeLensProvider() const { return optionalValue<CodeLensOptions>(codeLensProviderKey); } void setCodeLensProvider(CodeLensOptions codeLensProvider) { insert(codeLensProviderKey, codeLensProvider); } void clearCodeLensProvider() { remove(codeLensProviderKey); } // The server provides document formatting. - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> documentFormattingProvider() const; + std::optional<std::variant<bool, WorkDoneProgressOptions>> documentFormattingProvider() const; void setDocumentFormattingProvider( const std::variant<bool, WorkDoneProgressOptions> &documentFormattingProvider); void clearDocumentFormattingProvider() { remove(documentFormattingProviderKey); } // The server provides document formatting on typing. - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> documentRangeFormattingProvider() const; + std::optional<std::variant<bool, WorkDoneProgressOptions>> documentRangeFormattingProvider() const; void setDocumentRangeFormattingProvider(std::variant<bool, WorkDoneProgressOptions> documentRangeFormattingProvider); void clearDocumentRangeFormattingProvider() { remove(documentRangeFormattingProviderKey); } @@ -365,30 +365,30 @@ public: using WorkDoneProgressOptions::WorkDoneProgressOptions; // Renames should be checked and tested before being executed. - Utils::optional<bool> prepareProvider() const { return optionalValue<bool>(prepareProviderKey); } + std::optional<bool> prepareProvider() const { return optionalValue<bool>(prepareProviderKey); } void setPrepareProvider(bool prepareProvider) { insert(prepareProviderKey, prepareProvider); } void clearPrepareProvider() { remove(prepareProviderKey); } }; // The server provides rename support. - Utils::optional<std::variant<RenameOptions, bool>> renameProvider() const; + std::optional<std::variant<RenameOptions, bool>> renameProvider() const; void setRenameProvider(std::variant<RenameOptions,bool> renameProvider); void clearRenameProvider() { remove(renameProviderKey); } // The server provides document link support. - Utils::optional<DocumentLinkOptions> documentLinkProvider() const + std::optional<DocumentLinkOptions> documentLinkProvider() const { return optionalValue<DocumentLinkOptions>(documentLinkProviderKey); } void setDocumentLinkProvider(const DocumentLinkOptions &documentLinkProvider) { insert(documentLinkProviderKey, documentLinkProvider); } void clearDocumentLinkProvider() { remove(documentLinkProviderKey); } // The server provides color provider support. - Utils::optional<std::variant<bool, JsonObject>> colorProvider() const; + std::optional<std::variant<bool, JsonObject>> colorProvider() const; void setColorProvider(std::variant<bool, JsonObject> colorProvider); void clearColorProvider() { remove(colorProviderKey); } // The server provides execute command support. - Utils::optional<ExecuteCommandOptions> executeCommandProvider() const + std::optional<ExecuteCommandOptions> executeCommandProvider() const { return optionalValue<ExecuteCommandOptions>(executeCommandProviderKey); } void setExecuteCommandProvider(ExecuteCommandOptions executeCommandProvider) { insert(executeCommandProviderKey, executeCommandProvider); } @@ -405,29 +405,29 @@ public: using JsonObject::JsonObject; // The server has support for workspace folders - Utils::optional<bool> supported() const { return optionalValue<bool>(supportedKey); } + std::optional<bool> supported() const { return optionalValue<bool>(supportedKey); } void setSupported(bool supported) { insert(supportedKey, supported); } void clearSupported() { remove(supportedKey); } - Utils::optional<std::variant<QString, bool>> changeNotifications() const; + std::optional<std::variant<QString, bool>> changeNotifications() const; void setChangeNotifications(std::variant<QString, bool> changeNotifications); void clearChangeNotifications() { remove(changeNotificationsKey); } }; - Utils::optional<WorkspaceFoldersCapabilities> workspaceFolders() const + std::optional<WorkspaceFoldersCapabilities> workspaceFolders() const { return optionalValue<WorkspaceFoldersCapabilities>(workspaceFoldersKey); } void setWorkspaceFolders(const WorkspaceFoldersCapabilities &workspaceFolders) { insert(workspaceFoldersKey, workspaceFolders); } void clearWorkspaceFolders() { remove(workspaceFoldersKey); } }; - Utils::optional<WorkspaceServerCapabilities> workspace() const + std::optional<WorkspaceServerCapabilities> workspace() const { return optionalValue<WorkspaceServerCapabilities>(workspaceKey); } void setWorkspace(const WorkspaceServerCapabilities &workspace) { insert(workspaceKey, workspace); } void clearWorkspace() { remove(workspaceKey); } - Utils::optional<JsonObject> experimental() const { return optionalValue<JsonObject>(experimentalKey); } + std::optional<JsonObject> experimental() const { return optionalValue<JsonObject>(experimentalKey); } void setExperimental(const JsonObject &experimental) { insert(experimentalKey, experimental); } void clearExperimental() { remove(experimentalKey); } }; diff --git a/src/libs/languageserverprotocol/textsynchronization.h b/src/libs/languageserverprotocol/textsynchronization.h index ada8843872..2f77fb26af 100644 --- a/src/libs/languageserverprotocol/textsynchronization.h +++ b/src/libs/languageserverprotocol/textsynchronization.h @@ -70,12 +70,12 @@ public: using JsonObject::JsonObject; // The range of the document that changed. - Utils::optional<Range> range() const { return optionalValue<Range>(rangeKey); } + std::optional<Range> range() const { return optionalValue<Range>(rangeKey); } void setRange(Range range) { insert(rangeKey, range); } void clearRange() { remove(rangeKey); } // The length of the range that got replaced. - Utils::optional<int> rangeLength() const { return optionalValue<int>(rangeLengthKey); } + std::optional<int> rangeLength() const { return optionalValue<int>(rangeLengthKey); } void setRangeLength(int rangeLength) { insert(rangeLengthKey, rangeLength); } void clearRangeLength() { remove(rangeLengthKey); } @@ -155,7 +155,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT TextDocumentSaveRegistrationOptions public: using TextDocumentRegistrationOptions::TextDocumentRegistrationOptions; - Utils::optional<bool> includeText() const { return optionalValue<bool>(includeTextKey); } + std::optional<bool> includeText() const { return optionalValue<bool>(includeTextKey); } void setIncludeText(bool includeText) { insert(includeTextKey, includeText); } void clearIncludeText() { remove(includeTextKey); } }; @@ -172,7 +172,7 @@ public: void setTextDocument(TextDocumentIdentifier textDocument) { insert(textDocumentKey, textDocument); } - Utils::optional<QString> text() const { return optionalValue<QString>(textKey); } + std::optional<QString> text() const { return optionalValue<QString>(textKey); } void setText(const QString &text) { insert(textKey, text); } void clearText() { remove(textKey); } diff --git a/src/libs/languageserverprotocol/workspace.h b/src/libs/languageserverprotocol/workspace.h index 987a012515..158a6d948b 100644 --- a/src/libs/languageserverprotocol/workspace.h +++ b/src/libs/languageserverprotocol/workspace.h @@ -92,11 +92,11 @@ public: public: using JsonObject::JsonObject; - Utils::optional<QString> scopeUri() const { return optionalValue<QString>(scopeUriKey); } + std::optional<QString> scopeUri() const { return optionalValue<QString>(scopeUriKey); } void setScopeUri(const QString &scopeUri) { insert(scopeUriKey, scopeUri); } void clearScopeUri() { remove(scopeUriKey); } - Utils::optional<QString> section() const { return optionalValue<QString>(sectionKey); } + std::optional<QString> section() const { return optionalValue<QString>(sectionKey); } void setSection(const QString §ion) { insert(sectionKey, section); } void clearSection() { remove(sectionKey); } @@ -191,7 +191,7 @@ public: void setCommand(const QString &command) { insert(commandKey, command); } void clearCommand() { remove(commandKey); } - Utils::optional<QJsonArray> arguments() const { return typedValue<QJsonArray>(argumentsKey); } + std::optional<QJsonArray> arguments() const { return typedValue<QJsonArray>(argumentsKey); } void setArguments(const QJsonArray &arguments) { insert(argumentsKey, arguments); } void clearArguments() { remove(argumentsKey); } @@ -212,7 +212,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT ApplyWorkspaceEditParams : public JsonObject public: using JsonObject::JsonObject; - Utils::optional<QString> label() const { return optionalValue<QString>(labelKey); } + std::optional<QString> label() const { return optionalValue<QString>(labelKey); } void setLabel(const QString &label) { insert(labelKey, label); } void clearLabel() { remove(labelKey); } |