aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/languageserverprotocol/languagefeatures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/languageserverprotocol/languagefeatures.cpp')
-rw-r--r--src/libs/languageserverprotocol/languagefeatures.cpp54
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 &params)
+ : 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