diff options
Diffstat (limited to 'src/libs/languageserverprotocol/languagefeatures.cpp')
-rw-r--r-- | src/libs/languageserverprotocol/languagefeatures.cpp | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/src/libs/languageserverprotocol/languagefeatures.cpp b/src/libs/languageserverprotocol/languagefeatures.cpp index d76f03f0b6..e960296dc8 100644 --- a/src/libs/languageserverprotocol/languagefeatures.cpp +++ b/src/libs/languageserverprotocol/languagefeatures.cpp @@ -49,6 +49,7 @@ constexpr const char DocumentOnTypeFormattingRequest::methodName[]; constexpr const char RenameRequest::methodName[]; constexpr const char SignatureHelpRequest::methodName[]; constexpr const char SemanticHighlightNotification::methodName[]; +constexpr const char PrepareRenameRequest::methodName[]; HoverContent LanguageServerProtocol::Hover::content() const { @@ -245,6 +246,10 @@ DocumentOnTypeFormattingRequest::DocumentOnTypeFormattingRequest( : Request(methodName, params) { } +PrepareRenameRequest::PrepareRenameRequest(const TextDocumentPositionParams ¶ms) + : Request(methodName, params) +{ } + bool RenameParams::isValid(ErrorHierarchy *error) const { return check<TextDocumentIdentifier>(error, textDocumentKey) @@ -491,10 +496,55 @@ void SemanticHighlightToken::appendToByteArray(QByteArray &byteArray) const byteArray.append(char((scope & 0x00ff))); } +Utils::variant<VersionedTextDocumentIdentifier, TextDocumentIdentifier> +SemanticHighlightingParams::textDocument() const +{ + VersionedTextDocumentIdentifier textDocument = fromJsonValue<VersionedTextDocumentIdentifier>( + value(textDocumentKey)); + ErrorHierarchy error; + if (!textDocument.isValid(&error)) { + return TextDocumentIdentifier(textDocument); + } else { + return textDocument; + } +} + bool SemanticHighlightingParams::isValid(ErrorHierarchy *error) const { - return check<VersionedTextDocumentIdentifier>(error, textDocumentKey) - && checkArray<SemanticHighlightingInformation>(error, linesKey); + return checkVariant<VersionedTextDocumentIdentifier, TextDocumentIdentifier>(error, + textDocumentKey) + && checkArray<SemanticHighlightingInformation>(error, linesKey); +} + +PrepareRenameResult::PrepareRenameResult() + : Utils::variant<PlaceHolderResult, Range, std::nullptr_t>(nullptr) +{} + +PrepareRenameResult::PrepareRenameResult( + const Utils::variant<PlaceHolderResult, Range, std::nullptr_t> &val) + : Utils::variant<PlaceHolderResult, Range, std::nullptr_t>(val) +{} + +PrepareRenameResult::PrepareRenameResult(const PlaceHolderResult &val) + : Utils::variant<PlaceHolderResult, Range, std::nullptr_t>(val) + +{} + +PrepareRenameResult::PrepareRenameResult(const Range &val) + : Utils::variant<PlaceHolderResult, Range, std::nullptr_t>(val) +{} + +PrepareRenameResult::PrepareRenameResult(const QJsonValue &val) +{ + if (val.isNull()) { + emplace<std::nullptr_t>(nullptr); + } else if (val.isObject()) { + const QJsonObject object = val.toObject(); + if (object.keys().contains(rangeKey)) + emplace<PlaceHolderResult>(PlaceHolderResult(object)); + else + emplace<Range>(Range(object)); + } } } // namespace LanguageServerProtocol |